我有一个网站,我需要隔离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-with
或ends-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')]