Java arraylist大小小于实际值
我使用webdriver将类名为Java arraylist大小小于实际值,java,selenium,arraylist,webdriver,Java,Selenium,Arraylist,Webdriver,我使用webdriver将类名为topredo的web元素抓取到ArrayList中 看到屏幕滚动时web元素在增加,我使用while循环进行滚动和抓取 Java代码如下: outer: while (isContinue) { List<WebElement> all = driver.findElements(By.className("torpedo")); /* do screen scrolling*/ } outer:while(
topredo
的web元素抓取到ArrayList中
看到屏幕滚动时web元素在增加,我使用while
循环进行滚动和抓取
Java代码如下:
outer: while (isContinue) {
List<WebElement> all = driver.findElements(By.className("torpedo"));
/* do screen scrolling*/
}
outer:while(isContinue){
列出所有=driver.findElements(按.className(“鱼雷”));
/*做屏幕滚动*/
}
它运行良好,直到最后一个循环
在最后一个secode循环中,我得到了all.size()
结果208,但在最后一个循环中,all.size()
结果是172,而浏览器上web元素的实际总大小是243,我使用eclipse调试查看列表堆栈内容
截图如下:
outer: while (isContinue) {
List<WebElement> all = driver.findElements(By.className("torpedo"));
/* do screen scrolling*/
}
- 全部尺寸()
- 内容结束于索引171
all.size()
小于实际大小
,以及为什么索引中大于171的内容不可见
非常感谢 如评论中所述,每次循环迭代,您都会不断重置列表。我们可以在循环外部启动列表,并在循环内部向列表添加元素。代码应该是这样的
List<WebElement> all = null;
outer: while (isContinue)
{
all.addAll(driver.findElements(By.className("torpedo")));
/* do screen scrolling*/
}
List all=null;
外部:while(isContinue)
{
all.addAll(driver.findElements(By.className(“鱼雷”));
/*做屏幕滚动*/
}
如果列表中有重复的元素,也可以使用集合而不是列表
Set<WebElement> all = null;
outer: while (isContinue)
{
all.addAll(driver.findElements(By.className("torpedo")));
/* do screen scrolling*/
}
Set all=null;
外部:while(isContinue)
{
all.addAll(driver.findElements(By.className(“鱼雷”));
/*做屏幕滚动*/
}
提供更多信息:1。你的确切测试步骤是什么?2.什么对你有用?显示代码。3.你被困在哪里?提供错误跟踪。4.提供相关的HTML DOM。您正在一次又一次地重置all
。。。为什么不直接滚动直到你知道你已经完成了滚动,然后调用setall=driver.findElements(By.className(“鱼雷”)代码>在循环之后?这可能会解决在设置元素之前最后一次出现滚动的问题。很难说清楚,因为我看不到您的isContinue
正在做什么,也看不到循环逻辑的任何其他部分。:)