我试图a在一个网页上获得一个链接,在该网页上我知道该元素的类名称,但是表中每一行的标题都不同。
对于前。A行可能看起来像 Edit
在Chrome devtools中,我 //a[@class='constantClassName' and contains(text(),'Edit') and starts-with(@title,'Edit')]得到了大部分帮助。
我似乎无法上班的是追加ends-with(@title,'TextIKnowAheadOfTime')工作。在我的用例中,contains(text(),'sometext')可能会返回多个结果,因此我需要完全匹配。
在这里使用Java,并且将Java正则表达式与我想要的字符串连接起来会是最快的方法,或者是否有xpath查询方法通过完全匹配ends-with()?获得单个结果?
问题来源:Stack Overflow
这样的答案说明
默认情况下,selenium使用浏览器随附的“本机”版本的XPath。您可以使用JavaScript编写的Selenium随附的版本。乍一看,这似乎实现了XPath 1.0。
答案是旧的,但即使到现在,浏览器也不支持XPath-2.0。这是相关的,因为fn:ends-with(...)它是XPath-2.0函数。
但是您可以使用以下XPath-1.0组合来模拟它。在此,.是要比较的值,并且$ending是字符串“结束于”的字符串。
substring(., string-length(.) - string-length($ending) + 1) = $ending
根据您的情况,XPath-1.0等效于
ends-with(@title,'TextIKnowAheadOfTime')
是
substring(@title, string-length(@title) - string-length('TextIKnowAheadOfTime') + 1) = 'TextIKnowAheadOfTime'
我想现在您可以使表达式与所需的节点匹配。
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。