//form[@id=“form”]//span
第二个双斜杠,表示选取内部所有的 span,不管层级关系
- 使用星号找不特定的元素
//[@id=“form”]//[@type=“text”]
选取 id 属性为 form 的任意属性内部,并且 type 属性为 text 的任意元素。这里会找到 input。
- 使用
..从下往上找,根据 input 查找其父节点 span:
//input[@name=“key”]/…
注意最后的两个点,找到 input 节点的上级节点,如果还要再往上再加
/..
- 找同级节点:
比如我们想通过第一个 span 标签去 找 div 标签。树形结构中,兄弟节点之间的关系是通过父节点建立起来的。所以可以先找到父节点,再通过父节点找同级节点。
//span[@class=“bg”]/…/div
先通过
/..找到 span 的父节点,再通过父节点找到 div。
使用谓语定位
谓语是 Xpath 中用于描述元素位置。主要有数字下标、最后一个子元素last()、元素下标函数position()。
- 使用下标的方式,从 form 找到 input :
//form[@id=“form”]/span[2]/input
Xpath 中的下标从
1开始。
- 查找最后一个子元素,选取 form 下的最后一个 span:
//form[@id=“form”]/span[last()]
- 查找倒数第几个子元素,选取 form 下的倒数第一个 span:
//form[@id=“form”]/span[last()-1]
- 使用 position() 函数,选取 from 下第二个 span:
//form[@id=“form”]/span[position()=2]
- 使用 position() 函数,选取下标大于 2 的 span:
//form[@id=“form”]/span[position()>2]
使用逻辑运算符
如果元素的某个属性无法精确定位到这个元素,我们还可以用逻辑运算符 and 连接多个属性进行定位,以百度输入框为例。
- 使用
and:
//*[@name=‘wd’ and @class=‘s_ipt’]
查找 name 属性为 wd 并且 class 属性为 s_ipt 的任意元素
- 使用
or:
//*[@name=‘wd’ or @class=‘s_ipt’]
查找 name 属性为 wd 或者 class 属性为 s_ipt 的任意元素,取其中之一满足即可。
- 使用
|,同时查找多个路径,取或:
//form[@id=“form”]//span | //form[@id=“form”]//input
选取 form 下所有的 span 和所有的 input。
使用文本定位
使用文本定位,是 Xpath 中的一大特色。在自动化测试中,为了让代码的可读性更高,可以使用文本的方式。
以下一个案例:

部分网页结构如下:
支付宝其实我们需要点的是前的单选框,但是单选框没有任何特殊的标识,不够灵活。我们可以通过后面的名称,如(支付宝、余额支付等)来找到其对应行的 radio,再去点击。
我们就需要先通过文本定位到“支付宝”,再去找其同一行(tr)的 input 节点。如果理不清楚,我们可以先画一个结构图:

红色箭头表示查找路径,先定位到“支付宝”所在的 strong,再定位 td -> tr -> td - >input 。那么要定位“支付宝”文本,就需要用到 Xpath 中的函数 text() 或 string(),注意是函数,所以括号不能少。
text():当前元素节点包含的文本内容;
表达式//div[text()="文本"],能找到:
文本
- 1
不能找到:
文本
- 1
string():当前元素节点内部所有节点元素的文本内容。表达式//div[string()="文本"]上述两种情况都能找到。
好,接着写上面的内容。先通过 //strong[text()="支付宝"]定位到“支付宝”所在的元素 strong,再找上级 td -> tr,再向下找:
//strong[text()=“支付宝”]/…/…/td[1]/input
也可以写为:
//td[string()=“支付宝”]/…/td[1]/input
使用部分匹配函数
Xpath 中有提供了几个函数,用来进行部分匹配。
| 函数 | 说明 | 举例 |
|---|---|---|
| contains | 选取属性或者文本包含某些字符 | //div[contains(@id, ‘data’)] 选取 id 属性包含 data 的 div 元素 //div[contains(string(), ‘支付宝’)] 选取内部文本包含“支付宝”的 div 元素 |
| starts-with | 选取属性或者文本以某些字符开头 | //div[starts-with(@id, ‘data’)] 选取 id 属性以 data 开头的 div 元素 //div[starts-with(string(), ‘银联’)] 选取内部文本以“银联”开头的 div 元素 |
| ends-with | 选取属性或者文本以某些字符开头 | //div[ends-with(@id, ‘require’)] 选取 id 属性以 require 结尾的 div 元素 //div[ends-with(string(), ‘支付’)] 选取内部文本以“支付”结尾的 div 元素 |
验证 Xpath
验证 xpath 有两种方法:
- 在开发者工具的 Elements 中按
Ctrl + F,在搜索框中输入 Xpath:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
盖了95%以上软件测试开发知识点,真正体系化!**
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-kT4LuXhP-1712693958699)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
本文详细介绍了XPath在网页元素定位中的使用方法,包括下标、last()、position()函数,以及逻辑运算符、部分匹配函数的应用。作者还分享了如何结合文本定位解决实际测试问题,并提及了一份全面的软件测试学习资源,旨在帮助测试工程师提升技能和效率。
1098

被折叠的 条评论
为什么被折叠?



