使用“ bar”类查找div,其祖先在顶级“ foo”的范围内没有“ foo”类。例如,
<div class="foo">
<div class="foo">
<div><div>
<div class="bar"> </div>
</div></div>
</div>
<div class="bar"> </div>
</div>
找到不在嵌套“ foo”内部的栏。
我尝试过的XPath是:
WebElement root = driver.findElement(By.xpath("//div[@class='foo']"));
root.findElements(By.xpath(".//div[not(contains(@class, 'foo'))]//div[contains(@class, 'bar')]"));
但是XPath返回两个元素。还尝试了CSS选择器:
root.findElements(By.cssSelector(":not(.foo) .bar"));
也不起作用。
答案 0 :(得分:1)
尝试以下XPath-1.0表达式:
//div[contains(@class, 'bar') and not(ancestor::*[@class='foo'])]
它仅返回一项:所需的<div class="bar"> </div>
。
答案 1 :(得分:0)
此栏仅返回第二栏(至少在运行时...)
//*[@class='bar'][(parent::div[@class='foo'])]
答案 2 :(得分:0)
如果您尝试使用bar类访问直接子div,则这里是xpath。
//div[@class='bar' and parent::div[@class='foo']]