contains((伪类可能无法与本机不支持CSS选择器的浏览器一起使用。此外,它已从CSS3规范中弃用。
在Selenium中,是否有任何用于CSS选择器的选项;包含";类似于Xpath,其中我们用contains〔text((,….〕进行检查。
在下面的例子中,我给出了CSS和Xpath
<div class="abcjha">
<span>
<a class="test" ng-tracking="test1" data-tracking="abc">Daniel</a>
</span>
</div>
CSS : a[data-tracking='abc']
Xpath : //div/span/a[contains(text(),'Daniel')]
与上面的Xpath类似,CSS中是否有检查内部文本的选项?当我浏览它时,我看到了这个选项
==> css=button:contains("Log In")
但它对我不起作用。
有什么选择吗?
否,Selenium的css_selector仍然不支持:contains("text")
方法。
您可以在中找到一些详细的讨论
- selenium.com.mon.exceptions.InvalidSelectorException with"span:包含('string'(">
- 在CSS Selector中使用文本查找链接不起作用
所以替代方案是使用innerText
WebElement cell = driver.findElement(By.cssSelector("td[innerText='Item 1']"));
或textContent
WebElement cell = driver.findElement(By.cssSelector("td[textContent='Item 1']"));