ListIterator或Iterator不会在列表末尾停止

时间:2019-09-12 08:08:05

标签: java selenium iterator webdriver

我将多个元素(具体是17个)存储到List中。我正在尝试遍历并打印一些内容。但是当我检查时,迭代器.hasNext()并未在列表末尾停止。

List<WebElement> Categories = driver.findElements(By.xpath("//h2[@class='popover-category-name']"));

ListIterator<WebElement> ele = Categories.listIterator();
int i=0;
while(ele.hasNext()) {
    //String eleText = Categories.get(i).getText();
    System.out.println("Element at position "+i+" ");
    i++;
}

输出是这样的。

...

位于位置1329908的元素

位于位置1329909的元素

位于位置1329910的元素

位于位置1329911的元素

位于位置1329912的元素

位于位置1329913的元素

1 个答案:

答案 0 :(得分:1)

由于您不使用迭代器中的元素-该迭代器的光标不会移动,并且hasNext始终为true。您应该在循环中调用ListIterator::next

ListIterator<WebElement> ele = Categories.listIterator();
while(ele.hasNext()) {
    WebElement element = ele.next();
    // do something with your element
}

来自ListIterator::next文档:

  

返回列表中的下一个元素,并提高光标位置。