猿问

如何修复“java.lang.IndexOutOfBoundsException:

我正在尝试迭代元素,我必须在其中获取每个元素的文本主体,但是在打印第一个元素主体之后,接下来的下一个元素主体我得到“java.lang.IndexOutOfBoundsException:索引:1,大小:1” . 我知道这是非常简单的修复,但我无法修复它。请帮我解决这个问题。


在我下面的代码中,当“String text = KpiText.get(i).getText();” 第二次打印我收到“java.lang.IndexOutOfBoundsException:索引:1,大小:1”错误。


public void checkKPIValuesForTeam() throws InterruptedException{



        List<WebElement> userNames = DifferentUsers.findElements(By.xpath("//div[@class='radio sfa-radio-red']"));

        System.out.println(userNames.size());


       int maxLength = userNames.size();


       for(int i=0;i<maxLength;i++){


        WebElement namesOfUsers = userNames.get(i);

        System.out.println(namesOfUsers);

        namesOfUsers.click();


        List<WebElement> KpiText = KPIValues.findElements(By.xpath("//*[@id='main-content-app']/div/div[2]/div/div/div[2]/div[2]/div[1]/div/div[1]"));

        System.out.println(KpiText.size());

        String text = KpiText.get(i).getText();

        System.out.println(text);


}

预期它应该打印所有元素的主体以进行迭代。


白衣染霜花
浏览 217回答 3
3回答

江户川乱折腾

问题很简单。您正在使用值“i”来访问“KpiText”数组。在这种情况下,您的数组只有一个元素,因此索引 1 超出范围,如异常堆栈跟踪所述。如果你想打印它们,你应该这样做:for&nbsp;(WebElement&nbsp;element&nbsp;:&nbsp;KpiText) &nbsp;&nbsp;&nbsp;System.out.println(element.getText());

qq_笑_17

似乎 usernames.size() 大于 KpiText 的大小。引用 KpiText 列表时,请确保索引确实存在。所以也许像这样的支票if(i < KpiText.size()){&nbsp;String text = ...}

当年话下

如果您正在迭代, List<WebElement> KpiText 最好这样做:&nbsp; &nbsp;List<WebElement> KpiText = KPIValues.findElements(By.xpath("//*[@id='main-content-app']/div/div[2]/div/div/div[2]/div[2]/div[1]/div/div[1]"));&nbsp; &nbsp;for(int i=0; i < KpiText.size() - 1; i++){&nbsp; &nbsp; WebElement namesOfUsers = userNames.get(i);&nbsp; &nbsp; System.out.println(namesOfUsers);&nbsp; &nbsp; namesOfUsers.click();&nbsp; &nbsp; System.out.println();&nbsp; &nbsp; String text = KpiText.get(i).getText();&nbsp; &nbsp; System.out.println(text);}
随时随地看视频慕课网APP

相关分类

Java
我要回答