python selenium模块 css定位
selenium是python的非标准库,使用时需要下载安装
安装命令 pip install selenium
selenium是python的自动化测试模块,可以模拟浏览器的行为
所以在使用之前还要安装浏览器驱动,不同的版本对应不同的驱动文件,这里就不一一赘述了,网上相关的介绍有很多(主要是作者懒)
下载后将驱动文件放到添加过环境变量的路径,以便系统在使用时找到它,这里我把它放在了python的安装目录里
前戏部分就做完了,可以开始了
from selenium import webdriver
import time
# 创建Chrome对象
driver = webdriver.Chrome()
# 打开浏览器预设网址
driver.get('https://www.baidu.com')
# 通过id获取搜索框
input_ele = driver.find_element_by_css_selector('#kw')
# 模拟键盘操作 输入框输入内容
input_ele.send_keys("虞书欣")
# 模拟鼠标点击操作
driver.find_element_by_css_selector('#su').click()
# 延迟2秒,等待页面刷新完成
time.sleep(2)
a_ele = driver.find_element_by_css_selector('#content_left div.c-container a') # 解析页面元素 定位到目标链接 '''
中间遇到一个问题
使用id = 1定位时定位不到该节点,
a_ele = driver.find_element_by_css_selector('#content_left div#1 a')
报错:
selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: An invalid or illegal selector was specified
开始想的时页面可能这个元素还没刷新完成,后来我页面延迟5秒后还是报错
然后我使用class定位,成功定位到该节点,然后获取该节点的id,输出为:1
还是没搞懂为什么不能使用id定位到该节点,不知哪位大捞可以帮忙解读解读 原因是id为数字不符合python的命名规则......
'''
结合实例总结一下: driver.find_element_by_css_selector('#content') 查找id为content的节点
driver.find_element_by_css_selector('.content') 查找class为content的节点
driver.find_element_by_css_selector('div#conten>a') 查找id为content的div的所有子节点为a标签的节点
driver.find_element_by_css_selector('div#conten a') 查找id为content的div的所有子孙节点为a标签的节点
driver.find_element_by_css_selector('#conten p:nth-child(2)') 查找id为content的节点中的其父元素的第二个子元素是p标签的节点,并不是指第二个p标签节点
driver.find_element_by_css_selector('#conten>p:nth-of-type(2)') 查找id为content的节点的第二个p标签节点
driver.find_element_by_css_selector('.content[name=value]') 查找class为content且name属性为value的所有节点 find_element_by_css_selector 返回匹配到的第一个节点
find_elements_by_css_selector 返回匹配到的所有节点,类型是list
python selenium模块 css定位的更多相关文章
- python selenium之CSS定位
ccs的优点:css相对xpath语法比xpath简洁,定位速度比xpath快 css的缺点:css不支持用逻辑运算符来定位,而xpath支持.css定位语法形式多样,相对xpath比较难记. css ...
- python selenium模块 xpath定位
''' 附w3xpath语法地址 https://www.w3school.com.cn/xpath/xpath_syntax.asp 总结: 返回匹配到所有符合条件的第一个节点,对象是 <cl ...
- python+selenium 元素被定位到而且click()也提示执行成功,但是页面就是没有变化和跳转。
python+selenium 元素被定位到而且click()也提示执行成功,但是页面就是没有变化和跳转. 如果多次定位和click(),有时候会跳转. 我遇到很多次就是很郁闷,有人说,操作太快的,页 ...
- python selenium模块调用浏览器的时候出错
python selenium模块使用出错,这个怎么改 因为不同版本更新不同步问题,浏览器都要另外下一个驱动.
- 6 Python+Selenium的元素定位方法(CSS)
[环境] python3.6+selenium3.0.2+Firefox50.0+win7 [定位方法] 1.方法:find_element_by_css_selector('xx') CSS的语法比 ...
- Python selenium根据class定位页面元素
在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写id属性.通常一段html代码如下: <div cl ...
- selenium之css定位小结
前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...
- 自动化测试-6.selenium的css定位
前言 大部分人在使用selenium定位元素时,用的是xpath定位,因为xpath基本能解决定位的需求.css定位往往被忽略掉了,其实css定位也有它的价值,css定位更快,语法更简洁.这一篇css ...
- python+selenium二:定位方式
# 八种单数定位方式:elementfrom selenium import webdriverimport time driver = webdriver.Firefox()time.sleep(2 ...
随机推荐
- Linux基础篇学习——常见系统命令:ls,pwd,cd,date,hwclock,passwd,su,clear,who,w,uname,uptime,last,dmesg,free,ps,top
ls 显示指定目录中的内容 ls [OPTION]... [FILE]... OPTION -a --all,显示所有文件包括隐藏文件 -l 列出长属性,显示出文件的属性与权限等数据信息 -i 列出 ...
- 北邮oj 104. 912星球的研究生
104. 912星球的研究生 时间限制 1000 ms 内存限制 65536 KB 题目描述 最近912星球的研究生入学了,912星球的教务处因此忙的焦头烂额,要求yzr做一个信息管理系统登陆查询研究 ...
- JRebel 破解使用
步骤1:生成一个GUID:在线生成GUID地址 步骤2: 根据反向代理服务器地址拼接激活地址 服务器地址: https://jrebel.qekang.com/{GUID} 如果失效刷新GUID替换就 ...
- JAVA中,一个类中,方法加不加static的区别,
通俗理解: 1.若是对象的特有行为,(也就是某个实例方法特有的行为),不加static 2. 若是对象集合共有的集合,则加static static类型方法只可以访问静态变量和方法 实例方法可以访问实 ...
- 3.用IntelliJ IDEA 创建Maven
一.File→New→ Project (需要下载安装配置Maven等,这些步骤省略) 二.Maven→org.apache.maven.archetypes:maven-archetype-quic ...
- opnet
一.修改默认的文件管理 1.以管理员身份运行 opnet14.5 2. 3.初始默认是c盘下的op_madels 4.修改你默认的文件夹 二. 1.创建一个空场景 包含Manet模型 2. 出错 二. ...
- 关于代码覆盖 or 冲突
关于代码覆盖 or 冲突 在使用git同步代码时,步骤一般为 commit -> pull -> push 那这个过程的意义何在呢? 首先是区分本地仓库 与 远程仓库,可以理解为本地git ...
- webpack-bundle-analyzer打包文件分析工具
一.安装 npm intall webpack-bundle-analyzer –save-dev 二.配置 在build/webpack.prod.config.js中的module.exports ...
- 1066 Root of AVL Tree (25分)(AVL树的实现)
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...
- Java第二十八天,Lambda表达式
一.函数式编程 1.什么是函数式编程 函数式编程是种编程方式,是一种编程的思维,它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用.它的地位等同于面向对象 ...