【Selenium】Xpath选择器

1 Xpath语法简介

XPath (XML Path Language) 是由国际标准化组织W3C指定的,用来在XML和HTML文档中选择节点的语言。
目前主流浏览器 (Chrome, Firefox, Edge, Safari) 都支持Xpath语法。
既然已经有了CSS,为什么还要学习Xpath?

  • 有些场景用CSS选择Web元素很麻烦,而Xpath却比较方便。
  • Xpath还有其他领域会使用到,比如:爬虫框架Scrapy, 手机App框架Appium(不支持CSS)。

Xpath语法中,整个HTML文档根节点用 / 表示,与CSS选择器中的 > 类似,表示直接子节点关系。如

# 选择html下面的body下面的div元素
/html/body/div

1.1 查看元素Xpath

浏览器支持查看、复制元素Xpath:定位元素后右键选择Copy>>Copy Xpath

1.2 绝对路径选择

从根节点开始的,到某个节点,每层都依次写下来,每层之间用 / 分隔的表达式,就是某元素的绝对路径。

# 选择html下面的body下面的div元素
wd.find_element_by_xpath('/html/body/div')

# 等价于:
wd.find_element_by_css_selector('html>body>div')

1.3 相对路径选择

Xpath在前面加 // , 表示从当前节点往下寻找所有的后代元素,不管它在什么位置。

# 要选择所有的div元素里面的所有的p元素
wd.find_elements_by_xpath('//div//p')

# 等价于:
wd.find_element_by_css_selector('div p')

1.4 通配符

* 是一个通配符,对应任意节点名的元素,等价于CSS选择器 div > *

# 如果要选择所有div节点的所有直接子节点
wd.find_elements_by_xpath('//div/*')

# # 等价于:
wd.find_element_by_css_selector('div>*')

2 根据属性选择

格式: [@属性名=‘属性值’]
注意:

  • 属性名注意前面有个@
  • 属性值一定要用引号, 可以是单引号,也可以是双引号

2.1 根据id属性选择

# 选择id为kw的元素
wd.find_element_by_xpath('//*[@id="kw"]')

# 等价于:
wd.find_element_by_css_selector('#kw')

2.2 根据class属性选择

注意:若一个元素class有多个,要写全。(CSS选择器只需选一即可)

from selenium import webdriver
from time import sleep

wd = webdriver.Chrome()

# 调用Webdriver对象的get方法,打开网址
wd.get('https://www.baidu.com/')

# 选择所有a元素中class属性为mnav c-font-normal c-color-t的元素
elements = wd.find_elements_by_xpath('//a[@class="mnav c-font-normal c-color-t"]')

# 打印所有元素的文本内容
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值