[英]Java enhanced for loop and IndexOutOfBoundsException?
使用Java增强的for loop时为什么会出现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) {
}
}
java.lang.IndexOutOfBoundsException: Index: 1, Size: 0
这指定您已在索引1处进入循环,尽管数组的大小为0。您应在索引0处输入。这很奇怪。 所以这表明该错误是由下面的抛出
尝试运行一些调试-在此之前,请尝试打印由返回的对象
driver.findElements(By.cssSelector("input[type='text']"))
并尝试查看是否实际返回了任何内容。
我会发表评论,但没有足够的代表。
这也是一个for-each循环。
您可以检查此语句的结果driver.findElements(By.cssSelector("input[type='text']"))
。
似乎driver.findElement
s甚至在增强循环开始执行之前就获得了indexOutOfBound异常。 您可以尝试在控制台上调试或打印该值吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.