id属性的XPath在中间改变子字符串?



我有一个网站,我需要隔离XPATH标识符-他们有一个像这样的XPATH ID//*[@id="panel-detail-6163748c7952a-partnerCode"]

问题是网站在每次页面加载时都会改变6163748c7952a的值。

是否有这样的XPath表达式可以匹配该字符串的第一个/最后一个部分?对于像//*[@id="panel-detail-*-partnerCode"]

这样的通配符

ThisXPath 2.0表情,

//*[matches(@id, "^panel-detail-.*-partnerCode$")]

或thisXPath 1.0表情,

//*[starts-with(@id, 'panel-detail-') and
substring(@id, string-length(@id) - string-length('-partnerCode') + 1)  
= '-partnerCode']

将匹配id属性值以指定子字符串开始和结束的所有元素。

参见

  • XPath测试字符串以子字符串结束吗?

xpath中很少有starts-withends-with这样的方法。很多时候人们用不应该被鼓励的contains代替它们。

请注意,在xpath v2.0中可以使用end -with。

xpath v1.0:

//*[starts-with(@id,'panel-detail-') and contains(@id, '-partnerCode')]

xpath v2.0:

//*[starts-with(@id,'panel-detail-') and ends-with(@id, '-partnerCode')]

最新更新