线程“main”中的异常java.lang.IndexOutOfBoundsException:索引:23,大小:23

时间:2016-06-09 08:53:38

标签: selenium-webdriver

我想显示链接和链接名称的总数,我有我的代码,但它有IndexOutOfBoundsException错误

    String BaseURL = "http://istp.in/changathionlinebeta/index.php";
    WebDriver wd = new FirefoxDriver();
    wd.get(BaseURL);

    // get size
    java.util.List<WebElement> links = wd.findElements(By.tagName("a"));
    System.out.println("Total Number Of Links: " + links.size());

    // display links
    for (int i = 0; i <= links.size(); i++) {
        System.out.println(links.get(i).getText());
        links.get(i).click();
        wd.navigate().back();
    }

2 个答案:

答案 0 :(得分:1)

for (int i = 0; i < links.size(); i++) {
    ...
}

<=替换为<

java.util.List滚动到size方法。 它返回元素的总数,例如23.但是,您正在检查i=0i<=23实际上是24个元素。

i=0i<links.size()的迭代会检查23个元素。

答案 1 :(得分:1)

使用

i < links.size()

而不是

i <= links.size() because size return 23 but index start from 0 that means the last(23rd) element index is 22

之后的一件重要事情

wd.navigate().back();

你的代码会显示错误。所以试试下面的内容;​​

  String BaseURL = "http://istp.in/changathionlinebeta/index.php";
WebDriver wd = new FirefoxDriver();
wd.get(BaseURL);

// get size
java.util.List<WebElement> links = wd.findElements(By.tagName("a"));
System.out.println("Total Number Of Links: " + links.size());


int size = links.size();
// display links
for (int i = 0; i < size; i++) {
    java.util.List<WebElement> linksloop = wd.findElements(By.tagName("a"));
    System.out.println(linksloop.get(i).getText());
    linksloop.get(i).click();
    wd.navigate().back();
    Thread.sleep(3000);
}