Selenium java.lang.IndexOutOfBoundsException:索引3无效,大小为3

时间:2016-08-19 07:55:07

标签: java arrays selenium arraylist indexoutofboundsexception

我正在编写一个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)

请,任何帮助?

0 个答案:

没有答案