为什么我在使用Java增强版for循环时获得IndexOutOfBoundsException
?我的代码看起来像这样
for (WebElement input : driver.findElements(By.cssSelector("input[type='text']"))) {
if (input.isDisplayed()) {
input.clear();
}
}
它使用Selenium WebDriver查找所有<input type="text" />
标记,并在显示它们时清除它们的内容(否则会引发不同的异常)。在某些测试中,我得到了
java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:604)
at java.util.ArrayList.get(ArrayList.java:382)
堆栈跟踪的其余部分位于Pastebin。
修改
即使我添加了对数组空虚的检查
,仍会出现此错误List<WebElement> inputs = driver.findElements(By.cssSelector("input[type='text']"));
if (!inputs.isEmpty()) {
for(WebElement input : inputs) {
}
}
答案 0 :(得分:1)
java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
这指定您已在索引1处输入循环,但数组的大小为0.您应该在索引0处输入。这很奇怪。所以这表明错误是由引发的,见下文
尝试并运行一些调试 - 在此之前,尝试打印
返回的对象 driver.findElements(By.cssSelector("input[type='text']"))
并尝试查看是否实际返回了任何内容。
我会评论但没有足够的代表。
这也是一个for-each循环。
答案 1 :(得分:0)
您可以查看此声明的结果driver.findElements(By.cssSelector("input[type='text']"))
。
即使在增强循环开始执行之前,似乎driver.findElement
s正在获得indexOutOfBound异常。您可以尝试在控制台上调试或打印该值。