我正在尝试使用Selenium查找以下元素:
<a class="ABC" href="#" data-test-id="XXX|YYY|ZZZ">
页面上有多个元素;ABC"XXX"YYY";以及";ZZZ";,但我的关键词是";ABC";以及";ZZZ";。因此,为了准确地针对这个元素,我需要写一些类似的东西:
//input[@class="ABC"] AND //*[contains(@data-test-id,'ZZZ')]")
有没有一种方法可以用一个XPath来写这个?
使用Following Xpath或css选择器。
Xpath:
//a[@class='ABC' and contains(@data-test-id,'ZZZ')]
Css选择器:
a.ABC[data-test-id*='ZZZ']
您可以用XPath编写复合谓词,如下所示:
//a[@class='ABC' and contains(@data-test-id,'ZZZ')]
或
//a[@class='ABC'][contains(@data-test-id,'ZZZ')]
小心contains()
,因为它的子串测试可能会产生假阳性:例如,ZZZ
也是ZZZZ
的子串。这种更精细的测试可以避免像|
:那样的分隔值问题
//a[@class='ABC'][contains(concat('|',@data-test-id,'|'), '|ZZZ|')]