0

我在一些硒代码中使用以下内容:

WaitForElement(By.CssSelector("#document-count:contains(<number greater than 0>)"));

指定number greater than 0是我卡住的地方。有没有办法只使用 css 来检查元素的内部文本是否有 0 以外的内容?

4

2 回答 2

2

:contains在 CSS3 中已弃用。由于 WebDriver 直接与浏览器绑定,因此无法使用该伪类。

有没有办法只使用 css 来检查元素的内部文本是否有 0 以外的内容?

不幸的是没有。CSS 真的把 Selenium 用户搞砸了,因为他们弃用了:contains:nth

正如 Arran 所说,您可以使用 xpath,或者 - 如果您愿意一起尝试 C# 和 CSS (而不仅仅是您所说的 css),那么您可以想出一些东西来循环 x 次检查文本。

于 2013-11-08T16:48:45.877 回答
2

每 Chris Coyier 在 CSS Tricks 上

已弃用

:contains() - 据我所知,这已经消失了。当前的 CSS3 规范已将其删除。我不知道这个故事,如果你知道,请告诉我。乍一看,它看起来非常有用(能够根据它们包含的文本内容选择对象)。这可能是因为问题,或者选择器中的内容不受欢迎。我的偏好是让它通过元素而不是文本来选择,比如 p:contains(img),但是可惜没有这样的运气。



也就是说,如果您要设置值属性,您可以使用:not([value="0"])

参见 jsFiddle 演示



HTML

<div id="doc">
    <input type="text" value="0" />
    <br />
    <input type="text" value="1" />
    <br />
    <input type="text" value="2" />
</div>


CSS

#doc input[value="0"]
{
    background: red;
}

#doc input:not([value="0"])
{
    background: green;
}


结果

jsFiddle 结果

于 2013-11-08T17:00:56.817 回答