【问题标题】:How to select a web element by text with Selenium WebDriver, Java如何使用 Selenium WebDriver、Java 通过文本选择 Web 元素
【发布时间】:2015-08-19 08:13:53
【问题描述】:

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

<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 文本进行搜索,所以我不能使用 @ 987654325@ 命令。

【问题讨论】:

    标签: css selenium xpath selenium-webdriver css-selectors


    【解决方案1】:

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

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

    【讨论】:

    • 有没有办法将类名或任何附加参数添加到上面的 xpath 选择器?
    • @Eliyahu 是的。您可以轻松添加//div[contains(text(),'noreply@somedomain.com')][@class='classname']。使用@,因为类名是一个属性
    【解决方案2】:

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

    • noreply@somedomain.com

    • office.noreply@somedomain.com

    • home.noreply@somedomain.com

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-09-21
      • 2012-07-09
      • 1970-01-01
      • 2017-10-27
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多