我在一些硒代码中使用以下内容:
WaitForElement(By.CssSelector("#document-count:contains(<number greater than 0>)"));
指定number greater than 0
是我卡住的地方。有没有办法只使用 css 来检查元素的内部文本是否有 0 以外的内容?
:contains
在 CSS3 中已弃用。由于 WebDriver 直接与浏览器绑定,因此无法使用该伪类。
有没有办法只使用 css 来检查元素的内部文本是否有 0 以外的内容?
不幸的是没有。CSS 真的把 Selenium 用户搞砸了,因为他们弃用了:contains
和:nth
正如 Arran 所说,您可以使用 xpath,或者 - 如果您愿意一起尝试 C# 和 CSS (而不仅仅是您所说的 css),那么您可以想出一些东西来循环 x 次检查文本。
每 Chris Coyier 在 CSS Tricks 上:
已弃用
:contains() - 据我所知,这已经消失了。当前的 CSS3 规范已将其删除。我不知道这个故事,如果你知道,请告诉我。乍一看,它看起来非常有用(能够根据它们包含的文本内容选择对象)。这可能是因为问题,或者选择器中的内容不受欢迎。我的偏好是让它通过元素而不是文本来选择,比如 p:contains(img),但是可惜没有这样的运气。
也就是说,如果您要设置值属性,您可以使用:not([value="0"])
:
<div id="doc">
<input type="text" value="0" />
<br />
<input type="text" value="1" />
<br />
<input type="text" value="2" />
</div>
#doc input[value="0"]
{
background: red;
}
#doc input:not([value="0"])
{
background: green;
}