在我们测试的APP的多个环境中,一个元素的ID是不同的。我有这个div ID
CoredataForm:sec2_natural:grid1:left_section_natural:profession:selectProfession_auto_complete_force:ajax
ID的粗体标记部分是对所有环境都相同的部分。
我应该如何编写适合它们的XPath表达式呢?我用了这个
xpath="//div[starts-with(@id,'CoredataForm:sec2_natural:grid1:left_section_natural:profession:selectProfession') and ends-with(@id,'ajax')]"
但这并不管用。也许还有另一个问题:如何将contains()
函数与多个通配符一起使用?
2条答案
按热度按时间d5vmydt91#
如果您的工具仅支持XPath 1.0,则您的XPath可能无法工作,因为
fn:ends-with
在XPath 1.0中不可用您可以尝试将XPath中的
ends-with
替换为contains
kq0g1dla2#
Selify只支持XPath 1,但正如Jason所说,
ends-with
仅在XPath 2和更高版本中可用。但是,可以只使用XPath 1函数
substring
和string-length
来检查一个字符串是否以另一个字符串结尾。substring
函数返回从特定字符位置开始的子字符串。字符串中的第一个字符的位置为0
,因此substring('abc', 1)
='bc'
如果字符串
$s1
以另一个字符串$s2
结尾,则以下条件成立:substring($s1, string-length($s1) - string-length($s2)) = $s2
因此,这个表达式应该适用于您(为了可读性,将其分成多行):