我想将这个CSS选择器与Selenium webdriver一起使用
#coordinatonTable .odd:not(:has(.dataTables_empty))
我收到“指定了无效或非法字符串”错误。 我尝试了w3schools的jquery选择器测试。此服务还向我显示“非法选择器”。 如果我缩短它的选择器
#short .odd:not(:has(.dataTables_empty))
#coordinatonTable .odd:not(:has(.short))
#short .odd:not(:has(.short))
看起来选择器很长。但这不可能是真的。 有什么建议吗?
html部分的结构如下:
id="coordinatonTable"
class="odd"
class="dataTables_empty"
class="odd"
class="something"
class="odd"
class="somethingelse"
...
如果他们没有空的孩子,我想得到所有奇怪的元素。
答案 0 :(得分:4)
:has
不是有效的CSS选择器。它是一个jQuery扩展,在任何CSS文件中都是无效的。
我不知道为什么你的其他例子不会导致错误。他们为我做了。
答案 1 :(得分:2)
:has
是一个jQuery选择器 - 它不是CSS3规范的一部分。如果您只是检查是否存在类,请执行以下操作:
#coordinatonTable .odd:not(.dataTables_empty)
答案 2 :(得分:1)
您正在寻找的是一个非常令人垂涎(但不可用)的父选择器。与其他人提到的一样,:has
仅限jQuery,将被CSS拒绝。目前无法使用纯CSS根据其包含的子元素更改元素的样式。如果你有权访问循环执行的后端并创建元素,可以先检查是否有子节点,然后添加一个“空”类和“奇数”类。
示例:
id="coordinatonTable"
class="odd empty"
class="dataTables_empty"
class="odd"
class="something"
class="odd"
class="somethingelse"
...
或者如果那是不可能的,你可以在DOM加载后使用javascript循环并将空类添加到父元素。无论哪种方式,您需要在父元素上获取一个类,以便您可以这样做:
.odd.empty {
/* Special CSS for empty cell */
}