目录
2.1 xpth是什么
2.2 Xpath常用如下6种定位元素的方法:
1、通过绝对路径定位
2、通过相对路径定位
3、通过元素索引定位
4、使用元素属性定位
5、使用部分属性值匹配(也称为模糊方法定位)
6、使用元素文本定位
xpth会把html文档转化为xml 所以识别效率会低一些 但是影响并不大
id name这些方法识别是不会转化的
2.1 xpth是什么 XPATH是什么?
XPATH是一门在XML文档中查找信息的语言,XPATH可用来在XML文档中对
元素和属性进行遍历,主流的浏览器都支持XPATH,因为HTML页面在DOM中表
示为XHTML文档。
2.2 Xpath常用如下6种定位元素的方法: 【xpth定位元素方法】Xpath定位方法:
绝对路径 相对路径 元素索引 元素属性 元素属性值 元素文本
1、通过绝对路径定位 绝对路径的开头是一个斜线(/),从网页的根节点html开始,逐层去查找
需要定位的元素。
此方法缺点显而易见,当页面元素位置发生改变时,都需要修改,因此,并
不推荐使用。
举例:百度搜索框绝对路径定位
driver.find_element_by_xpath('/html/body/div[1]/div[1]/div/div[1]/div/for
m/span[1]/input')
备注:当同一层次有多个相同的元素时,使用下标区分,下标从1开始
2、通过相对路径定位 小诀窍:自顶向上去定位
相对路径的开头是两个斜线(//),表示文件中所有符选出来,即使是处于树中不同的层级也会被选出来。
举例:百度搜索框相对路径定位driver.find_element_by_xpath(‘//span[1]/input')driver.find_element_by_xpath(’//form/span[1]/input')备注:以上都可以定位到百度搜索框,相对路径的长度和开可以采用从后往前逐层定位直到定位到即可的方式去定位。
3、通过元素索引定位 遇到同层级相同标签元素时,可以使用索引
(举例:定位百度 hao123链接driver.find_element_by_xpath('//div[3]/a[2]')
4、使用元素属性定位 元素属性定位要求属性能够定位到唯一一个元素,如果存在多个相同条件的标
签,默认定位第一个,具体格式 //标签名[@属性="属性值"]
支持使用and 和 or 关键字,多个属性一起定位元素。
举例:
driver.find_element_by_xpath("//a[@name='tj_trnews']")
driver.find_element_by_xpath("//a[@name='tj_trnews' and @class='mnav']")
driver.find_element_by_xpath("//a[@name='tj_trnews’ or @class='mnav']")
备注:
Xpath支持通配符号 * 号,通过属性定位还可以如下写法:
driver.find_element_by_xpath("//*[@*='tj_trnews']")
5、使用部分属性值匹配(也称为模糊方法定位) 属性值如果太长或网页中的元素属性动态变化,可以使用此方法
元素属性值开头包含内容:starts-with()
driver.find_element_by_xpath("//a[starts-with(@name,'tj_trhao')]")
元素属性值结尾包含内容:substring()
driver.find_element_by_xpath("//a[substring(@name,9)='123']")#第九位,以什么结尾
元素属性值结尾包含内容:contains()(适用场合:1、元素信息过长 2、动态属性元素 比如订单)
driver.find_element_by_xpath("//a[contains(@name,'hao')]")
备注:
XPath1.0中没有ends-with函数,2.0有,现在浏览器实现的都是1.0
文章图片
这种报错就是xpth的语法报错
6、使用元素文本定位 元素文本在xpath中可以通过text()函数获取,也可以用其来进行元素定位。
driver.find_element_by_xpath("//a[text()='新闻']")
driver.find_element_by_xpath("//a[contains(text(),'新')]")