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

Java ListIterator或Iterator不会在列表末尾停止,java,selenium,iterator,webdriver,Java,Selenium,Iterator,Webdriver,我正在将多个元素17存储到列表中。我试着反复阅读并打印一些东西。但是当我检查时,迭代器.hasNext并没有在列表末尾停止 List<WebElement> Categories = driver.findElements(By.xpath("//h2[@class='popover-category-name']")); ListIterator<WebElement> ele = Categories.listIterator(); int i=0; while(e

我正在将多个元素17存储到列表中。我试着反复阅读并打印一些东西。但是当我检查时,迭代器.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位置,因为您不使用迭代器中的元素-此迭代器的光标未移动,并且hasNext始终为true。您应该在循环中调用ListIterator::next:

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

返回列表中的下一个元素并前进光标位置


您不会通过调用next来使用迭代器中的元素,因此hasNext始终为true。返回列表中的下一个元素并前进光标位置。感谢您的解释!理解和工作。