我正在编写一个selenium代码来清除表中定义的项目列表。 单击删除图标清除项目。我正在做以下事情:
1-阅读所有项目 2-将它们保存在SelenideElement Array的数组列表中。 3-通过在Arraylist上循环,点击每个项目行的删除图标。
虽然我在Arraylist中使用了项目的大小限制,但是生成了 IndexOutOfBoundsException !!
我仍然不知道为什么!如图所示,我们无法达到超出数组大小限制的索引。 代码运行良好,项目将被删除,除非数量项达到2!那么为什么它正在工作但是当尺寸减小时,代码将导致异常!
我的代码:
List<SelenideElement> list_items = new ArrayList<>();
for (SelenideElement Obj : $("#tableX").$$("tr"))
list_items.add(Obj.$$("td").get(4).$("a"));
for (int t = 0; t < list_items.size();t++) {
if (t < list_items.size()) {
((JavascriptExecutor) WebDriverRunner.getWebDriver()).executeScript("arguments[0].click();", list_items.get(t));
WebDriverRunner.getWebDriver().manage().timeouts().implicitlyWait(6,
TimeUnit.SECONDS);
WebDriverRunner.getWebDriver().navigate().to("https://url/tableItems");
$$("a").shouldHave(sizeGreaterThan(1));
}
}
错误日志:
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at java.util.ArrayList.rangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at com.codeborne.selenide.impl.CollectionElement.getWebElement(CollectionElement.java:29)
at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:85)
at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:58)
at com.sun.proxy.$Proxy9.findElements(Unknown Source)
at com.codeborne.selenide.impl.WebElementSelector.findElements(WebElementSelector.java:37)
at com.codeborne.selenide.impl.BySelectorCollection.getActualElements(BySelectorCollection.java:28)
at com.codeborne.selenide.impl.CollectionElement.getWebElement(CollectionElement.java:29)
at com.codeborne.selenide.commands.ToWebElement.execute(ToWebElement.java:11)
at com.codeborne.selenide.commands.ToWebElement.execute(ToWebElement.java:8)
at com.codeborne.selenide.commands.Commands.execute(Commands.java:136)
at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:52)
at com.sun.proxy.$Proxy9.toWebElement(Unknown Source)
at com.codeborne.selenide.impl.ElementFinder.getSearchContext(ElementFinder.java:69)
at com.codeborne.selenide.impl.ElementFinder.getWebElement(ElementFinder.java:56)
at com.codeborne.selenide.commands.GetWrappedElement.execute(GetWrappedElement.java:11)
at com.codeborne.selenide.commands.GetWrappedElement.execute(GetWrappedElement.java:8)
at com.codeborne.selenide.commands.Commands.execute(Commands.java:136)
at com.codeborne.selenide.impl.SelenideElementProxy.dispatchAndRetry(SelenideElementProxy.java:82)
at com.codeborne.selenide.impl.SelenideElementProxy.invoke(SelenideElementProxy.java:58)
at com.sun.proxy.$Proxy9.getWrappedElement(Unknown Source)
请,任何帮助?