arraylist大小小于真实

时间:2017-05-05 07:32:55

标签: java selenium arraylist webdriver

我正在使用webdriver将类名为topredo的Web元素捕获到ArrayList中。

当屏幕滚动时,看到网页元素在增加,我使用while循环进行滚动和抓取。

这样的Java代码:

outer: while (isContinue) {    
        List<WebElement> all = driver.findElements(By.className("torpedo"));
        /* do screen scrolling*/
}

它运行良好,直到最后一个循环。

在上一个secode循环中,我得到all.size()结果208,但在最后一个循环中,all.size()结果为172,而浏览器上的Web元素的实际总大小为243,我使用eclipse debug查看列表堆栈内容。

屏幕截图如下:

  • all.size()

all.size()

  • 内容以索引171结束

content end on index 171

所以我的问题是为什么all.size()小于the real size,为什么索引大于171的内容是不可见的?

非常感谢!

1 个答案:

答案 0 :(得分:0)

如评论中所述,您将继续为循环的每次迭代重置列表。我们可以在循环外启动List并继续向循环内的列表添加元素。代码看起来应该是这样的。

List<WebElement> all = null;
outer: while (isContinue) 
{    
     all.addAll(driver.findElements(By.className("torpedo")));
     /* do screen scrolling*/
}

如果您在列表中获得重复的元素,也可以使用集合而不是列表。

Set<WebElement> all = null;
outer: while (isContinue) 
{    
     all.addAll(driver.findElements(By.className("torpedo")));
     /* do screen scrolling*/
}