这将提供包含文本的所有元素foobar
driver.findElement(By.xpath("//*[text()[contains(.,'foobar')]]"));
如果你想要完全匹配,
driver.findElement(By.xpath("//*[text() = 'foobar']"));
或者你可以在Selenium中使用JQuery执行Javascript。
这将返回所有包含文本的Web元素,从父级到最后一个子级,因此我正在使用jquery选择器来获取包含此文本的内部节点,但是如果您有多个包含相同文本的节点,这可能并不总是准确的。:last
(WebElement)((JavascriptExecutor)driver).executeScript("return $(\":contains('foobar'):last\").get(0);");
如果您希望与上述内容完全匹配,则需要对结果运行过滤器,
(WebElement)((JavascriptExecutor)driver).executeScript("return $(\":contains('foobar')\").filter(function() {" +
"return $(this).text().trim() === 'foobar'}).get(0);");
jQuery返回一个元素数组,如果页面上只有一个包含该特定文本的Web元素,您将获得一个包含该元素的数组。我正在做的是获取数组的第一个元素并将其转换为.get(0)
WebElement
希望这有帮助。