XPath 测试器
使用浏览器引擎,针对 XML 或 HTML 测试 XPath 1.0 表达式,即时查看匹配的节点、属性、文本以及数值或字符串结果。
什么是 XPath 测试器?
XPath 测试器会针对你粘贴的 XML 或 HTML 文档计算 XPath 表达式并显示结果:匹配的元素及其标记和文本、属性值,或者对于 count()、sum() 之类的表达式,显示数字、字符串或布尔值。结果会随着输入实时更新。
如何使用 XPath 测试器
- 输入 XPath 表达式,例如
//book[price > 35]/title。 - 选择把文档按 XML 还是 HTML 解析。
- 粘贴或编辑文档。
- 查看匹配数量以及每个匹配的节点,或标量结果。
示例
//book[price > 35]/title on the sample bookstore XML
2 matches: Learning XML, XQuery Kick Start
sum(//book/price) 返回 119.94。
何时使用 XPath 测试器
适合为网页抓取、Selenium/Playwright 定位器、XSLT 或 XML 配置处理编写 XPath。浏览器只实现了 XPath 1.0,所以 matches()、string-join() 等 XPath 2.0/3.1 函数不可用。粘贴的 HTML 中的脚本不会被执行。
XPath 测试器 的工作原理
文档由浏览器的 DOMParser 解析(application/xml 或 text/html);会报告 XML 语法错误。表达式使用 document.evaluate()(浏览器原生的 XPath 1.0 引擎)和 ANY_TYPE 结果类型计算,因此支持节点集、数字、字符串和布尔值。命名空间前缀根据根元素上的声明解析。最多显示 200 个匹配。
常见用例
- 为 UI 测试构建
//button[normalize-space()="Save"]这样的定位器。 - 用
//book/@category提取所有属性值。 - 对 XML 订阅源中的数值计数或求和。
- 调试爬虫中的 XPath 为什么没有返回任何结果。
常见问题
为什么带默认命名空间的 XPath 没有返回结果?
在 XPath 1.0 中,不带前缀的名称永远不会匹配带命名空间的元素。请在根元素上声明前缀并使用它,或使用 *[local-name()='book']。
应该按 HTML 还是 XML 解析?
网页用 HTML(容错解析,标签名小写);订阅源、SOAP、站点地图和配置文件用 XML。
支持 XPath 2.0 吗?
不支持。所有主流浏览器都只实现了 XPath 1.0。