欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > XPath语法详解及案例讲解

XPath语法详解及案例讲解

2025/9/24 22:41:57 来源:https://blog.csdn.net/weixin_49364648/article/details/144984361  浏览:    关键词:XPath语法详解及案例讲解

XPath(XML Path Language)是一种查询语言,用于在XML或HTML文档中定位节点元素。Selenium广泛使用XPath来定位网页中的元素,尤其适用于复杂的层级结构或属性定位。


1. 基本语法与案例

语法描述示例案例
/绝对路径,从根节点开始/html/body/div定位根节点下的第一个div元素。
//相对路径,从任意位置开始//div定位文档中所有的div元素。
*匹配任意元素//*[@class='btn']定位class为btn的所有元素。
@属性定位//input[@id='username']定位id="username"的输入框。
text()定位包含特定文本内容的元素//button[text()='提交']定位文本内容为“提交”的按钮。
contains()模糊匹配,包含指定值//div[contains(@class, 'header')]定位class包含header的所有div元素。
starts-with()定位以指定值开头的属性//input[starts-with(@id, 'user')]定位iduser开头的输入框。

2. XPath 轴选择

轴语法描述示例案例
parent::定位父节点//button/parent::div定位按钮的父节点div
child::定位子节点//div/child::p定位div的直接子节点p元素。
ancestor::定位祖先节点//span/ancestor::div定位span的所有祖先节点div元素。
descendant::定位后代节点//div/descendant::span定位div下的所有后代节点span
following-sibling::定位后续兄弟节点//h2/following-sibling::p定位h2标签之后的所有兄弟节点p元素。
preceding-sibling::定位前面的兄弟节点//h2/preceding-sibling::p定位h2标签之前的所有兄弟节点p元素。

3. XPath 高级用法

3.1 多条件定位
//input[@type='text' and @placeholder='请输入用户名']

案例:定位一个输入框,要求type="text"placeholder="请输入用户名"

3.2 分组定位
//div[@id='menu'] | //span[@class='icon']

案例:同时定位id="menu"divclass="icon"span

3.3 索引定位
//ul/li[3]

案例:定位列表中第3个li元素。


4. 结合案例使用

4.1 定位登录表单
//form[@id='loginForm']/input[@name='username']

解释:定位id="loginForm"的表单内,name="username"的输入框。

4.2 定位特定表格单元格
//table[@id='dataTable']/tbody/tr[2]/td[3]

解释:定位id="dataTable"表格的第2行、第3列。


5. 特殊场景用法

5.1 子节点查找父节点
//span[@class='child']/parent::div

案例:通过class="child"span元素定位其父节点div

5.2 使用文本的模糊查找
//a[contains(text(), '更多')]

案例:定位文本中包含“更多”的链接。

5.3 动态元素定位
//button[starts-with(@id, 'submit')]

案例:定位idsubmit开头的按钮。

5.4 复合条件与轴结合
//div[@class='content']/descendant::p[text()='文章正文']

案例:定位class="content"div中,包含文本“文章正文”的p元素。


6. XPath 调试技巧

  1. 浏览器工具:使用 Chrome 或 Firefox 的开发者工具,在控制台中直接测试 XPath 表达式。
  2. 高效定位:尽量避免使用绝对路径(/html/body/...),多使用相对路径(//div)。
  3. 结合调试工具:如插件 XPath Helper 或 Selenium IDE 快速验证 XPath。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词