【发布时间】:2014-08-21 07:18:33
【问题描述】:
我想查询特定元素。
我的代码结构如下:
HTML
<ul class="main">
<li>...</li>
<li>...</li>
<li>
<ul class="to--exclude">
<li>...</li>
<li>...</li>
</ul>
</li>
<li>...</li>
...
</ul>
我想在 'mainclass but not forli'swhich are insideto-exclude` 类中测试 li's 的存在。
问题是如果我使用element(by.css('.main li')),它将找到所有li's,包括to-exclude类中的那些。
在 Chrome 的开发者工具中,我可以使用 JQuery 的 :not 或 .not() 准确定位它们。
$('.main li').not('ul.to--exclude li')
// OR
$(".main li:not('ul.to-exclude li')");
在 protractor 中用作
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.
如何在量角器中完成相同的操作。如何排除一些嵌套在父定位器类中的类。
谢谢
【问题讨论】:
-
jQuery
:not()与 CSS:not()不同 - 请参阅 Why is my jQuery :not() selector not working in CSS? -
另请注意,您的 HTML 无效,您不能在
ul中直接包含ul。要嵌套列表,您必须在li中包含ul。
标签: javascript html css-selectors protractor nested-lists