在 Selenium JAVA 中针对以下代码获取上述异常。谁能帮帮我吗..
driver.get("https://jqueryui.com/");
List<WebElement> Listlinks = driver.findElements(By.tagName("a"));
//Listlinks.addAll(driver.findElements(By.tagName("img")));
System.out.println("size of links and images" +Listlinks.size());
List<WebElement> activelinks = new ArrayList<WebElement>();
for (int i=0; i<=Listlinks.size(); i++) {
if(Listlinks.get(i).getAttribute("href")!= null) {
activelinks.add( Listlinks.get(i));
//System.out.println("size of active links and images" + activelinks.size());
}
System.out.println("size of active links and images" + activelinks.size());
}
for (int j=0; j<activelinks.size()-1; j++) {
HttpURLConnection connection = (HttpURLConnection)new URL(activelinks.get(j).getAttribute("href")).openConnection();
connection.connect();
String response = connection.getResponseMessage();
connection.disconnect();
System.out.println(activelinks.get(j).getAttribute("href")+ response );
}
}
}
期望活动链接和损坏链接的列表
你有
for (int i=0; i<=Listlinks.size(); i++) {
//...
}
Listlinks
的项目数为Listlinks.size()
。由于该语言是 0 索引的,因此第一个元素的索引为 0,第二个元素的索引为 1,依此类推,最后一个元素的索引为 Listlinks.size() - 1
且 Listlinks.size()
超出范围。因此,当您在 Listlinks.get(i)
为 i
时执行 Listlinks.size()
时,您将收到错误消息。解决方案是通过将循环更改为在 i
达到 Listlinks.size()
时停止来修复循环的结束符号,而不是再次执行内部块:
for (int i=0; i<Listlinks.size(); i++) {
//...
}