“线程“主”java.lang.IndexOutOfBoundsException 中出现异常:

问题描述 投票:0回答:1

在 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 );
    }
        
    
    
    
}

}

期望活动链接和损坏链接的列表

selenium-webdriver
1个回答
0
投票

你有

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++) {
    //...
}
© www.soinside.com 2019 - 2024. All rights reserved.