【发布时间】:2019-08-23 12:57:36
【问题描述】:
由于IndexOutOfBounds 错误,我的代码无法执行。我必须自动化迭代下拉列表,包括每个下拉列表选择的 webtable。我必须在 webtable 中进行编辑。
你能帮我解决这种情况吗?
s = new Select(ledger.SelectPayrollCategoriesLedger);
List<WebElement> led=s.getOptions();
int ledselectsize=led.size();
for(int i=0;i<ledselectsize;i++) {
WebElement select=led.get(i);
select.click();
Thread.sleep(1500);
int editactionsize=ledger.EditActionBtnLedger.size();
System.out.println("edit size is: "+editactionsize);
for(int j=0;j<editactionsize;j++) {
try {
editac=ledger.EditActionBtnLedger.get(j);
editac.click();
} catch (Exception e) {
editac = ledger.EditActionBtnLedgerStale.get(j);
editac.click();
}
}
}
它在以下位置显示异常:
editac = ledger.EditActionBtnLedgerStale.get(j);
【问题讨论】:
-
好吧,您应该检查哪个索引超出范围。从您的(格式错误的)代码看来,最有可能的部分是
ledger.EditActionBtnLedgerStale.get(j)(因为EditActionBtnLedgerStale可能小于EditActionBtnLedger)。但是,如果您正在访问的列表可能同时更改,即在您的线程正在执行时,那么其他列表也可能有问题:例如,ledselectsize将具有定义的值,但如果led的大小在迭代调用led.get(i)可能会失败 - 最好使用i<led.size()等。
标签: java arrays selenium automation