Selenium XPath逻辑AND连接多个contains()过滤器



我正在尝试使用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|')]

最新更新