如何编写CSS选择器选择没有特定属性的元素?

Deb*_*anB 10 selenium webdriver css-selectors selenium-webdriver

如何编写CSS选择器选择没有特定属性的元素?

我有2个<div>节点如下:

我需要选择<div>(具有相似的类)并且每个都具有相似的降序 <button>但没有style属性.

XPath似乎正常工作:

//div[@class and not (@style)]/button
Run Code Online (Sandbox Code Playgroud)

我正在寻找一个等效的CssSelector.

试验:

div[class :not(style)]>button (doesn't works).
Run Code Online (Sandbox Code Playgroud)

我经历了以下讨论,但他们似乎丢弃了class属性,:not([class])如:

我正在寻找以类似的结尾:not(attribute).

Rat*_*nov 9

我认为更准确的CSS Selector是:

div[class]:not([style])>button
Run Code Online (Sandbox Code Playgroud)

因为button元素是元素的子div元素.

希望它能帮到你!


Ada*_*aft 9

那是你要找的代码:

div:not([style]) button{
  background-color: red;
}
Run Code Online (Sandbox Code Playgroud)

现在让我们分解吧.在这个例子中我们有四个选择器:

  1. div和button - 这些选择html元素.我们可以用例如类选择器替换它.weEq5.
  2. :not() - 表示我们希望所有不符合括号内选择器的内容.
  3. [style] - 一个非常强大的属性选择器.我们可以放在其他任何css选择器内部,如html标签名称(按钮或div),类名或ID.

div:not([style])意味着我们希望所有div都没有style属性.之后我们有一个空格和一个按钮意味着我们需要上面选择器内的所有按钮.

>在按钮之前添加a div:not([style]) > button只会选择按钮元素,这些元素是所选div的直接子元素.它将从div内部更深的选择按钮中排除.