【问题标题】:ListIterator or Iterator does not stop at the end of the ListListIterator 或 Iterator 不会在 List 末尾停止
【发布时间】:2019-09-12 08:08:05
【问题描述】:

我将多个元素(具体为 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 的元素

【问题讨论】:

  • 您不会通过调用next 来消耗迭代器中的元素,因此hasNext 始终为真。
  • next 返回列表中的下一个元素并前进光标位置。

标签: java selenium iterator webdriver


【解决方案1】:

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

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

来自ListIterator::next 文档:

返回列表中的下一个元素并移动光标位置。

【讨论】:

  • 感谢您的解释!理解和工作。
猜你喜欢
  • 1970-01-01
  • 2014-07-31
  • 2016-03-18
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 2012-07-11
相关资源
最近更新 更多