我需要在网页上找到以下元素
<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())
命令。
答案 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']