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

如何通过带字符通配符的属性值使用XPath选择元素

用XPath通配符风格选择元素的方法

没问题!XPath完全支持用类似通配符的逻辑来选择元素,针对你给出的HTML结构,这里有几种靠谱的方法帮你选中那两个<a>元素:

首先先明确你的目标HTML结构:

<tr> 
  <th class="textLeft textTop">Opgavebeskrivelse:</th> 
  <td> 
    <a id="m_Content_opgaverDS_abc" href="/about">click me</a> 
    <br> 
    <a id="m_Content_opgaverDS_123" href="/other_stuff">click me too</a><br> 
  </td> 
</tr>

方法1:用starts-with()匹配开头(最适合你的场景)

因为这两个<a>的id属性都是以m_Content_opgaverDS_开头的,用starts-with()函数可以精准过滤出这类元素,XPath表达式如下:

//a[starts-with(@id, 'm_Content_opgaverDS_')]
  • 解释://a表示选中页面中所有<a>元素,[starts-with(@id, 'xxx')]是过滤条件,只保留id属性以指定字符串开头的元素。

方法2:用contains()匹配包含指定字符串

如果你的场景是id中包含某个字符串(而非严格开头),可以用contains()函数:

//a[contains(@id, 'm_Content_opgaverDS_')]
  • 注意:这个方法会选中所有id里有m_Content_opgaverDS_的<a>,哪怕字符串在中间或末尾,你的例子里也能用,但starts-with()更精准。

方法3:用XPath 2.0+的matches()支持正则通配符

如果你的运行环境支持XPath 2.0及以上(比如现代浏览器的开发者工具、某些测试框架),可以用正则表达式来实现更灵活的匹配,比如:

//a[matches(@id, 'm_Content_opgaverDS_.+')]
  • 解释:正则m_Content_opgaverDS_.+表示匹配以m_Content_opgaverDS_开头,后面跟着任意字符(至少一个)的id,完全符合你的两个目标元素。

测试小技巧

在浏览器的开发者工具控制台里,你可以用$x()函数快速测试XPath表达式,比如输入:

$x("//a[starts-with(@id, 'm_Content_opgaverDS_')]")

就能直接看到选中的两个<a>元素啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:51:02