为什么我IndexOutOfBoundsException
在使用 Java 增强的 for 循环时会得到这样的结果?我的代码看起来像这样
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) {
}
}