这将给出包含文本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返回一个Elements数组,如果页面上只有一个带有该特定文本的web元素,您将获得一个元素的数组.我正在做.get(0)来获取数组的第一个元素并将其转换为WebElement
希望这可以帮助.