XPath 定位符号

发布时间 2023-11-20 10:16:42作者: 蝈蝈俊

使用XPATH定位页面上的元素时,主要有下面符号:

从文档的任何位置开始查找

// - 从文档的任何位置开始查找元素:

使用 // 表示对整个 HTML 文档进行搜索,而不是从特定节点开始。

例如,//div 会匹配页面上的所有 <div> 元素。

从根节点或相对于当前节点的直接子节点开始查找

/ - 从根节点或相对于当前节点的直接子节点开始查找:

当位于表达式的开头时,它表示从根节点(即 HTML 文档的最顶层)开始搜索。

当用在两个节点名称之间时,如 A/B,它表示选择 A 节点的直接子节点 B

当前节点

. - 代表当前节点:

在 XPath 中,. 表示当前节点。这在使用相对路径时特别有用。

当前节点的父节点

.. - 代表当前节点的父节点:

用于向上移动到当前节点的父节点。

选择属性

@ - 用于选择属性:

用于选择元素的属性。例如,//@id 将选择所有具有 id 属性的元素。

任何元素节点

* - 代表任何元素节点

例如,//* 将选择文档中的所有元素,而 div/* 将选择所有作为 <div> 直接子元素的节点。

条件

[ ] - 条件:

用于在查找元素时提供额外条件。例如,//div[@class='example'] 将匹配所有 class 属性为 "example"<div> 元素。

或操作符

| - 或操作符:

用于组合多个查询,返回任一查询的结果。例如,//div | //span 将匹配所有的 <div><span> 元素。

选择当前节点的任意一级子节点

在 XPath 中,要表示当前节点的任何一级子节点,你可以使用以下两种方法:

使用 * 符号:

如果你想选择当前节点下的所有子节点(无论是直接子节点还是更深层的子节点),你可以使用 * 符号。例如,.* 将会选择当前节点下的所有子节点。

使用 // 符号:

另一种方法是使用 // 符号,当它与点符号 . 结合使用时,含义会稍有不同,它代表从当前位置开始的任何层次的子节点。例如,.//* 会选择当前节点下的所有子节点,无论这些子节点位于哪一层。

这两种方法在不同的情境下有不同的用途。使用 * 时,它只考虑直接子节点。而使用 // 时,它考虑所有后代节点,不论它们的层级深度如何。

总结

理解这些符号和它们的用法对于有效使用 XPath 在 Selenium 中进行元素定位是非常重要的。这些基础知识将帮助你编写更精确和灵活的自动化测试脚本。