Selenium:按类xpath的findElements,在特定元素之前

时间:2019-09-16 22:40:33

标签: java selenium selenium-webdriver selenium-chromedriver

我的页面布局如下:

<div class="cool nice">...</div>  //1
<div class="cool nice">...</div>  //2
<div class="cool nice">...</div>  //3
<div class="cool nice">...</div>  //4
<div class="separator element">...</div>
<div class="cool nice">...</div>  //5
<div class="cool nice">...</div>  //6

我可以像这样用class="cool nice"获取所有元素:

List<WebElement> elements=driver.findElements(By.xpath("//*[@class='cool nice']"));

但是,我想排除以class="separator element开头的元素。最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

使用preceding-siblingpreceding

//div[@class='separator element']/preceding::div[@class='cool nice']

OR

//div[@class='separator element']/preceding-sibling::div[@class='cool nice']

立即尝试

List<WebElement> elements=driver.findElements(By.xpath(" //div[@class='separator element']/preceding-sibling::div[@class='cool nice']"));

答案 1 :(得分:1)

在我看来应该没有一个地方:

//*[@class="cool nice" and not(./preceding::*[@class="separator element"])]