XPATH:排除具有特定子项的元素

时间:2017-07-06 08:30:19

标签: java selenium xpath

<ul>
<li><a></li>
<li><a></li>
<li><div><a></div></li>
</ul>

如何只选择前2个项目并排除包含div的 li

考虑 ul 设置为父级,我已尝试

./li[not(contains(descendant::div]

但显然那不起作用

3 个答案:

答案 0 :(得分:3)

删除contains并使用//代替./

//li[not(descendant::div)]

答案 1 :(得分:2)

搜索没有li子标记的div标记的Xpath:

//li[not(descendant::div)]

另一种选择:

//li[not(.//div)]

要从选择中排除某些元素,请使用not()

之类的locator[not(condition)]方法

此表set上的一些更复杂的示例: 这里是一个定位器,它获取没有元素的行,文本以&#34开头; C&#34;

//table[@id='customers']//tr[not(.//*[starts-with(text(),'C')])]

解释:

  

//table[@id='customers']//tr - 获取所有行

     

[not(.//*[...])] - 不包含具有特定属性的元素

     

[starts-with(text(),'C')] - 以及描述的属性

答案 2 :(得分:0)

//li[not(contains(div,' '))]

这适合我。

您的代码:

  

./的Li [否(含有(后裔:: DIV]

缺少一些&#39;)&#39;,应该是:

./li[not(contains(descendant::div))]