简介
XPath 是一种用于在 XML 文档中检索信息的语言。它通过路径表达式导航 XML 文档,广泛应用于各种场景。XPath 的灵活性和强大功能使其成为在 XML 结构中准确定位和提取数据的重要工具。
XPath 使用场景
Web 自动化测试:
-
- XPath 在 Web 自动化测试中广泛应用,XPath 提供了一种强大的定位方式。它能够通过元素的层次结构、属性、文本内容等进行更加灵活和精准的定位,适用于各种复杂的 Web 应用页面。
App 自动化测试:
-
- 在移动应用的自动化测试中,XPath 可以在原生应用和混合应用(Hybrid App)中定位和操作元素。在 App 的 UI 中,XPath 可以针对不同平台(如iOS和Android)提供一致的选择能力,使测试脚本更具通用性。
XPath 相对定位的优点
- 可维护性更强:XPath 相对定位可以相对于其他元素的方式来定位元素。如果页面结构发生变化,只需要更新相对路径中的某些部分,而不必重新创建整个定位表达式。
- 语法更加简洁:XPath 相对路径是相对于其他元素的路径,更容易理解和编写。与复杂的绝对路径相比,相对路径语法更加简洁。
- 相比于 css 可以支持更多的方式:XPath 相对定位可以访问 XML 和 HTML 文档的任何部分,而不仅仅是元素和属性。
示例代码如下:
# 复制的绝对定位
$x('//*[@id="ember75"]/td[1]/span/a')
# 编写的相对行为
$x(" //*[text()='技术分享 | SeleniumIDE用例录制']")"SeleniumIDE用例录制']"
XPath 定位的调试方式
浏览器-console:$x(“XPath 表达式”)。

浏览器-elements:ctrl+f 输入 XPath 或者 css。

XPath 基础语法(包含关系)
| 表达式 | 结果 |
|---|---|
| / | 从该节点的子元素选取 |
| // | 从该节点的子孙元素选取 |
| * | 通配符 |
| nodename | 选取此节点的所有子节点 |
| … | 选取当前节点的父节点 |
| @ | 选取属性 |
XPath 基础语法实战
打开测试人社区(https://ceshiren.com/),F12 进入开发者模式,选择 console
整个页面
$x("/")

整个页面中的所有元素
$x("/*")

整个页面中的所有元素
$x("//*")

查找页面上所有的 div 标签节点
$x("//div")

查找 id 属性为 site-logo 的节点
$x('//*[@id="site-logo"]')

查找节点的父节点
$x('//*[@id="site-logo"]/..')

XPath 顺序关系(索引)
XPath 通过索引直接获取对应元素:
# 获取此节点下的所有的li元素
$x("//*[@id='ember21']//li")
# 获取此节点下【所有的节点的】第一个li元素
$x("//*[@id='ember21']//li[1]")
XPath 高级用法
| 语法 | 含义 |
|---|---|
| [last()] | 选取最后一个 |
| [@属性名=‘属性值’ and @属性名=‘属性值’] | 与关系 |
| [@属性名=‘属性值’ or @属性名=‘属性值’] | 或关系 |
| [text()=‘文本信息’] | 根据文本信息定位 |
| [contains(text(),‘文本信息’)] | 根据文本信息包含定位 |
注意:所有的表达式需要和[]结合。
XPath 高级用法实战
打开测试人社区(https://ceshiren.com/),F12 进入开发者模式。
选取最新的元素
选取最后一个


1502

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



