如何使用Selenium WebDriver,Java

时间:2015-06-04 15:54:00

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

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

<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不是链接的文本进行搜索,因此我无法使用findElement(By.linkText())命令。

2 个答案:

答案 0 :(得分:13)

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

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

答案 1 :(得分: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']