You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XPath选择class属性包含"a"的所有div元素?

正确的XPath表达式选择包含指定class的div元素

你之前的写法问题在于XPath对属性匹配的逻辑和你预期的不一样:

  • //div[@class="a"]是精确匹配class属性值完全等于"a"的元素,但你的div元素class都是多值组合(比如a b、a c),所以匹配不到;
  • //div[@class="a *"]是在找class属性值正好是"a *"的元素,这显然不是你要的结果。

下面是几种可靠的解决方案:

方法1:精确匹配完整类名(推荐,兼容所有XPath版本)

用concat把class属性前后加上空格,再用contains匹配包含' a '的情况,这样可以避免误匹配类似aa或ab这种包含"a"但不是独立类名的情况:

//div[contains(concat(' ', @class, ' '), ' a ')]

方法2:XPath 2.0+ 专用写法

如果你的XPath环境支持2.0及以上版本,可以用tokenize把class按空格分割成列表,再检查是否存在等于"a"的项:

//div[tokenize(@class, '\s+')='a']

方法3:简单匹配(不推荐,存在误匹配风险)

如果能确定"a"总是class属性的第一个值,或者不介意误匹配类似a-b这种包含"a"的类名,可以用starts-with:

//div[starts-with(@class, 'a')]

但这种写法会匹配到class为aa或者a-test的元素,所以除非你明确知道场景,否则不建议用。

内容的提问来源于stack exchange,提问作者MagicHat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:29:20