Javascript Angularjs量角器:用于排除嵌套元素的有效选择器

Javascript Angularjs量角器:用于排除嵌套元素的有效选择器,javascript,html,css-selectors,protractor,nested-lists,Javascript,Html,Css Selectors,Protractor,Nested Lists,我想查询特定的元素 我的代码结构如下: HTML <ul class="main"> <li>...</li> <li>...</li> <li> <ul class="to--exclude"> <li>...</li> <li>...</li> </ul

我想查询特定的元素

我的代码结构如下:

HTML

<ul class="main">
    <li>...</li>
    <li>...</li>
    <li>
        <ul class="to--exclude">
            <li>...</li>
            <li>...</li>
        </ul>
    </li>
    <li>...</li>
    ...
</ul>
量角器中使用时

element(by.css('.main li').not('ul.to--exclude li'));
// OR
element(by.css(".main li:not('ul.to--exclude li')"));
上述代码给出了一个错误:

InvalidElementStateError: invalid element state: Failed to execute 'querySelectorAll' on 'Document': '.main li:not('ul.to--exclude li')' is not a valid selector.
如何在量角器中实现同样的功能。如何排除嵌套在父定位器类中的某些类


谢谢

您应该能够使用CSS伪类
:而不是像这样的

element(by.css(".main > li > ul:not(.to--exclude) li, .main > li)"));
我将添加
.main>li
作为备份选择器,因为您似乎希望选择
.main
下的所有子
li
s。此选择器适用于以下情况:

  • ...
如果您没有像
这样的
ul
s.to--include
,您可以将选择器减少到:

element(by.css(".main > li)"));

您应该能够使用CSS伪类
:而不是像这样做:

element(by.css(".main > li > ul:not(.to--exclude) li, .main > li)"));
我将添加
.main>li
作为备份选择器,因为您似乎希望选择
.main
下的所有子
li
s。此选择器适用于以下情况:

  • ...
如果您没有像
这样的
ul
s.to--include
,您可以将选择器减少到:

element(by.css(".main > li)"));

您应该能够使用CSS伪类
:而不是像这样做:

element(by.css(".main > li > ul:not(.to--exclude) li, .main > li)"));
我将添加
.main>li
作为备份选择器,因为您似乎希望选择
.main
下的所有子
li
s。此选择器适用于以下情况:

  • ...
如果您没有像
这样的
ul
s.to--include
,您可以将选择器减少到:

element(by.css(".main > li)"));

您应该能够使用CSS伪类
:而不是像这样做:

element(by.css(".main > li > ul:not(.to--exclude) li, .main > li)"));
我将添加
.main>li
作为备份选择器,因为您似乎希望选择
.main
下的所有子
li
s。此选择器适用于以下情况:

  • ...
如果您没有像
这样的
ul
s.to--include
,您可以将选择器减少到:

element(by.css(".main > li)"));

jQuery
:not()
不同于CSS
:not()
-另请注意,您的HTML无效,您不能在
ul
中直接使用
ul
。要嵌套列表,您必须在
li
中具有
ul
。jQuery
:not()
不同于CSS
:not()
-另请注意,HTML无效,您不能直接在
ul
中具有
ul
。要嵌套列表,您必须在
li
中具有
ul
。jQuery
:not()
不同于CSS
:not()
-另请注意,HTML无效,您不能直接在
ul
中具有
ul
。要嵌套列表,您必须在
li
中具有
ul
。jQuery
:not()
不同于CSS
:not()
-另请注意,HTML无效,您不能直接在
ul
中具有
ul
。要嵌套列表,您必须在
li
中具有
ul
。请注意,这假设
ul
元素嵌套深度仅为一级。如果您还有任何嵌套的
ul
元素,您将无法使用
:not()
对其进行筛选-请注意,这假设
ul
元素的嵌套深度仅为一级。如果您还有任何嵌套的
ul
元素,您将无法使用
:not()
对其进行筛选-请注意,这假设
ul
元素的嵌套深度仅为一级。如果您还有任何嵌套的
ul
元素,您将无法使用
:not()
对其进行筛选-请注意,这假设
ul
元素的嵌套深度仅为一级。如果您还有任何嵌套的
ul
元素,您将无法使用
:not()
对其进行筛选-请参阅