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 ...
随机推荐
- 加油站问题 Gas Station
2019-06-01 17:09:30 问题描述: 问题求解: 其实本题本质上是一个数学题. [定理] 对于一个循环数组,如果这个数组整体和 SUM >= 0,那么必然可以在数组中找到这么一个元 ...
- Building Applications with Force.com and VisualForce (DEV401) (二二):Visualforce Componets (Tags) Library Part II
Dev401-023:Visualforce Pages: Visualforce Componets (Tags) Library Part II Apex:pageBlockTable1.A ...
- maven resource filter 说明和配置方法
<maven> <dependencies> <dependency> ... </dependency> </dependencies> ...
- HOOK相关原理与例子
消息HOOK 原理: 1. 用户输入消息,消息被放到系统消息队列. 2. 程序发生了某些需要获取输入的事件,就从系统消息队列拿出消息放到程序消息队列中. 3. 应用程序检测到有新的消息进入到程序消息队 ...
- Nginx Configure
1.主配置/etc/nginx.conf #/etc/nginx/nginx.conf user nginx; worker_processes auto; error_log /var/log/ng ...
- Hadoop Zookeeper 分布式服务框架
what is Zookeeper? 1,开源的分布式的,为分布式应用提供协调服务的Apache项目2,提供一个简单原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务3,设计非常易于编程,它 ...
- MySQL count知多少
统计一个表的数据量是经常遇到的需求,但是不同的表设计及不同的写法,统计性能差别会有较大的差异,下面就简单通过实验进行测试(大家测试的时候注意缓存的情况,否则影响测试结果). 1. 准备工作 为了后续测 ...
- L - Subway(最短路spfa)
L - Subway(最短路spfa) You have just moved from a quiet Waterloo neighbourhood to a big, noisy city. In ...
- Oracle给权限和同义词
在同一个DB下,用户A创建了一个Table(student),用户B无法访问.如果B想要访问,就需要A赋予B权限. 登录用户A执行下面语句: GRANT SELECT, INSERT, UPDATE, ...
- 解决VS项目程序运行完就自动关闭窗口
VS的程序运行完会关闭窗口,需要设置工程属性 笔者虽然是Java开发者,但是学习用到了C++与C语言,之前使用的是dev与codeblock并没有这个情况,那么如何解决 首先你有这个hello,wor ...