我正在尝试迭代元素,在这里我必须获取每个元素的文本主体,但是在打印第一个元素主体之后,接下来是下一个元素主体,我将获得“ java.lang.IndexOutOfBoundsException:索引:1,大小:1“。我知道这是非常简单的修复程序,但是我无法修复它。请帮助我解决此问题。
在下面的代码中,当“字符串文本= 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);
}
预期它应该为所有元素打印主体以便迭代。
答案 0 :(得分:2)
问题很简单。您正在使用值“ i”访问“ KpiText”数组。 在这种情况下,数组只有一个元素,因此索引1超出了范围,如异常堆栈跟踪所示。
如果要打印它们,则应执行以下操作:
for (WebElement element : KpiText)
System.out.println(element.getText());
答案 1 :(得分:0)
似乎usernames.size()大于KpiText的大小。引用KpiText列表时,请确保索引确实存在。所以也许像
if(i < KpiText.size()){
String text = ...
}
答案 2 :(得分:0)
如果要遍历List<WebElement> KpiText
,最好这样做:
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]"));
for(int i=0; i < KpiText.size() - 1; i++){
WebElement namesOfUsers = userNames.get(i);
System.out.println(namesOfUsers);
namesOfUsers.click();
System.out.println();
String text = KpiText.get(i).getText();
System.out.println(text);
}