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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值