Selenium自动化测试之Xpath网页元素定位

本文介绍了XPath在自动化测试中的作用,强调其用于网页元素定位。XPath提供多种定位方式,如绝对路径、相对路径、属性选择等。文章还分享了XPath的一些实用技巧,包括使用工具firebug和xpath checker辅助定位,以及使用following-sibling、preceding-sibling、starts-with等高级操作。同时,提到了实战中的应用和注意事项,并推荐了CSS Selector作为补充学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XPath 是一门在 XML 文档中查找信息的语言。XPath 可用来在 XML 文档中对元素和属性进行遍历。XPath虽然是被设计用来搜寻XML文档的,不过它也能很好的在HTML文档中工作,并且大部分浏览器也支持通过XPath来查询节点。

xpath的作用就是两个字“定位”,运用各种方法进行快速准确的定位,推荐两个非常有用的的firefox工具:firebug和xpath checker。

具体的语法请参考W3school

xpath基础

最常用的归纳几点:
1. /(绝对路径,从根节点选取)
2. //(相对路径,所有子代节点,不用考虑是否直接子节点)
3. @ 选取属性
4. “.”选取当前节点
5. “..”选取当前节点的父节点

实例:

  • /bookstore/book[last()-1] 选取属于 bookstore 子元素的倒数第二个 book 元素

  • /bookstore/book[position()<3] 选取最前面的两个属于 bookstore 元素的子元素的 book 元素

  • //title[@lang=’eng’] 选取所有 title 元素,且这些元素拥有值为 eng 的 lang 属性

  • xpath=(//input[@value=text])[8] 索引,第8个input的value=text

  • //div[contains(@class,’xxx’)] class包含xxx的div

  • //div[@class=’xxx’ and @type=’xxx’] 用and连接,以2个属性确定唯一元素,也是可以写成//span[@name=’xxx’][text()=’xxx’]

xpath拓展

  • following-sibling: 选择当前节点之后的所有同级节点,那么没有加上“sibling”关键字的,搜索的就是之上/之下的所有节点,忽略同级概念,例如:
<div>
<input id="123">
<input>    
</div>

要定位第二个input://input[@id=’123’]/following-sibling::input

  • preceding-sibling: 选取当前节点之前的所有同级节点

  • starts-with: 以某某开头,例如://input[starts-with(@class,’xxx’)]

  • 绝对路径 html/body/div/span[2]/input[2] 中间结构变化,就失效

  • 相对路径 //开始,在整个html source里找,不管在什么位置

  • 索引[x] //div/input[2] div下面第二个input

  • 完全匹配 xpath=//*[text()=”Join”]

  • not关键字 就是否定的意思
    比如找一个id不为123的input:input[not[id=’123’]]
    又如找一个文本中不包含xxx字段的span://span[not(contains(text(),’xxx’))]

  • 通配符 *
    比如//span[@*=”xxx”]指定位span中任意属性包含xxx的
    比如//[@=”xxx”]指定位页面中任意属性保护xxx的标签

实战积累

xpath=((//table[@class="dashboard-data-table"])[2]//td[contains(@style,"#8dd889")]//..//td[1]/a)[1]

xpath=(//a[@class='dijitStretch link'])[contains(@href,".zip&forceView=true")]

#实战积累# 持续更新中。。。

想要学习CSS Selector进行元素定位的童鞋,请移步:

Web元素定位之CSS Selector
http://blog.youkuaiyun.com/ywyxb/article/details/58607218

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值