我正在尝试使用xPath查找包含一段文本的元素,但我无法使其正常工作…。
WebElement searchItemByText = driver.findElement(By.xpath("//*[@id='popover-search']/div/div/ul/li[1]/a/span[contains(text()='Some text')]"));
如果删除带有“ contains”内容的最后一位,它将找到我的span元素,但是我需要根据文本内容进行选择。它也不是“某些文本”的完美匹配,因为它也可能包含截断的字符串。
有人看到这个问题吗?
我认为问题出在这里:
[contains(text()='Some text')]
为了解决这个问题,
[]
text()
contains
您应该尝试将其更改为
[text()[contains(.,'Some text')]]
外部[]条件是在该节点集中的每个单独节点上运行的条件,text()是一个选择器,它与作为上下文节点的子级的所有文本节点匹配-它返回一个节点集。
内部[]条件是在该节点集中的每个节点上运行的条件。
contains是对字符串进行运算的函数。在这里传递了一个单独的文本节点(.)。
.