我正在尝试使用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')]
为了解决这个问题,
[]
是一个条件,可在该节点集-您的情况下的每个span节点。它匹配是否运行任何单个节点
符合括号内的条件。
text()
是一个选择器与作为上下文子级的所有文本节点匹配
node-返回一个节点集。
contains
是一个可运行的函数在一个字符串上。如果传递了节点集,则该节点集为converted into a string by returning the string-value of the node in the node-set that is first in document order。
您应该尝试将其更改为
[text()[contains(.,'Some text')]]
[]
是在每个单独节点上运行的条件在该节点集
text()
是一个匹配所有文本的选择器上下文节点的子节点-返回一个节点
组。
[]
是一个条件,可在该条件下对每个节点进行操作节点集。
contains
是对字符串进行操作的函数。在这里通过单个文本节点(
.
)。 关于selenium - Selenium和xPath-通过包含文本来定位链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23078308/