如何使用 Selenium WebDriver 按文本 select Web 元素,Java

How to select a web element by text with Selenium WebDriver, Java

我需要在网页上找到以下元素

<div class="b-datalist__item__addr">noreply@somedomain.com</div>

我正在使用 Java 为 Selenium WebDriver 编码。
需要此元素的确切 CSS 选择器才能将其与 driver.findElement(By.cssSelector(the-selector).click 命令一起使用。
div[class='b-datalist__item__addr'] 选择器不够好,因为我必须根据 noreply@somedomain.com 不是 link 的文本进行搜索,所以我不能使用 findElement(By.linkText()) 命令。

Css 不允许您进行基于文本的搜索。 xpath 是唯一的选择。

//div[contains(text(),'noreply@somedomain.com')]

contains(node, substring) 可能会解决问题,但请注意,如果有多个元素具有相似的文本内容,例如

  • noreply@somedomain.com

  • office.noreply@somedomain.com

  • home.noreply@somedomain.com

Predicate [contains(text(),'noreply@somedomain.com')] 将匹配所有这些

在这种情况下最好使用starts-with(node, substring):

//div[starts-with(text(),'noreply@somedomain.com')]

或通过准确的文本内容获取所需元素:

//div[text()='noreply@somedomain.com']