我想查询特定元素。
我的代码结构如下:
HTML
<ul class="main">
<li>...</li>
<li>...</li>
<li>
<ul class="to--exclude">
<li>...</li>
<li>...</li>
</ul>
</li>
<li>...</li>
...
</ul>
我想测试li's
li class but not for
至排除`类中的which are inside
存在。
问题是,如果我使用element(by.css('.main li'))
,它会找到所有li's
,包括to-exclude
类内的:not
。
在 Chrome的开发人员工具中,我能够使用JQuery的.not()
或$('.main li').not('ul.to--exclude li')
// OR
$(".main li:not('ul.to-exclude li')");
完全找到它们。
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.
上面的代码给出了错误:
{{1}}
如何在量角器中完成相同的操作。如何排除嵌套在父定位器类中的一些类。
由于
答案 0 :(得分:3)
您应该可以使用CSS伪类:not
这样做:
element(by.css(".main > li > ul:not(.to--exclude) li, .main > li)"));
我会将.main > li
添加为备用选择器,因为您似乎要选择li
下的所有子.main
。这个选择器适用于这种情况:
<ul class="main">
<li>...</li>
<li>...</li>
<li>
<ul class="to--exclude">
<li>...</li>
<li>...</li>
</ul>
</li>
<li>
<ul class="to--include">
<li>...</li>
<li>...</li>
</ul>
</li>
...
</ul>
如果您没有ul
之类的.to--include
,则可以将选择器缩小为:
element(by.css(".main > li)"));