XPath通过@属性名='值'精准定位节点,支持contains()、starts-with()及and/or组合条件,注意大小写、布尔属性写法及引号匹配。

XPath 可以通过属性选择器精准定位具有特定属性值的节点,核心写法是用方括号 [] 包裹属性条件,用 @属性名='值' 表达匹配关系。
基础语法:匹配指定属性值
最常用形式是 //*[@attribute='value'] 或更具体的路径如 //div[@class='btn-primary']。
-
@表示属性(不是元素),后面紧跟属性名,不能省略 - 属性值要用单引号或双引号包裹,比如
@id="submit"或@data-status='active' - 支持全路径或相对路径,
//表示任意层级查找,/表示直接子节点
处理常见特殊情况
实际中属性值可能含空格、动态内容或多个类名,需灵活应对:
- 匹配包含某字符串的属性值:用
contains(@class, 'btn')—— 适合 class 多值情况,如class="btn btn-danger" - 匹配以某字符串开头:用
starts-with(@id, 'user-')—— 适合 ID 有固定前缀的场景 - 忽略大小写匹配(XPath 1.0 不原生支持,需借助函数或升级到 XPath 2.0+;多数浏览器/工具仍用
translate()模拟)
组合多个属性条件
用 and 或 or 连接多个属性判断,增强定位精度:
-
//input[@type='text' and @name='username']—— 同时满足两个属性 -
//button[@class='save' or @class='submit']—— 满足其一即可 - 注意:多个
and条件要写全,不能简写为@a='x' @b='y'(语法错误)
注意点和易错提醒
有些细节不注意会导致查不到节点:
- 属性名区分大小写,
@CLASS和@class是不同的 - HTML 中某些属性(如
checked、disabled)是布尔属性,存在即为 true,应写作[@checked]而非[@checked='true'] - 如果属性值含单引号,XPath 中改用双引号包裹,反之亦然;实在复杂可用
concat()拼接
基本上就这些。熟练掌握 @、contains() 和 and/or 组合,90% 的属性查找需求都能覆盖。










