【问题标题】:Regarding performing some action based on matched condition in for loop in selenium关于在硒的for循环中根据匹配条件执行某些操作
【发布时间】:2018-06-11 05:05:54
【问题描述】:

我想将传入的 RFQ No 字符串与表中的一些数据进行匹配,当这与特定行匹配时,我想单击匹配行中的按钮,但在其他列

但是代码报错

代码:

    String baseUrl = "https://test.transporteg.com/";
    driver.get(baseUrl);
    driver.findElement(By.xpath("//*[@id=\"j_idt12:email\"]")).sendKeys("kevin@openspaceservices.com");
    driver.findElement(By.xpath("//*[@id=\"j_idt12:password\"]")).sendKeys("Eg123");
    driver.findElement(By.xpath("//*[@id=\"j_idt12:j_idt19\"]")).click();
    driver.findElement(By.linkText("Dashboard Provider")).click();
    driver.findElement(By.xpath("//*[@id=\"rfqViewId:j_idt248_data\"]/tr/td[5]/div[1]/input")).click();

    WebElement Webtable = driver.findElement(By.xpath("//*[@id=\"table-1\"]/tbody/tr[1]/td[1]"));
    List<WebElement> allElements = Webtable.findElements(By.xpath("//*[@id=\"table-1\"]/tbody/tr/td[1]"));
    System.out.println("Reached Here 1");

    System.out.println("No. of Rows in the WebTable: " + allElements.size());
    String[] RFQ_NO = {"6291/91/06/18"};

    System.out.println("Reached Here 8");
    System.out.println("All emelements count "+allElements.size());
    for (WebElement we : allElements) {
        for (int i = 0; i <= allElements.size(); i++) 
        {
            System.out.println("For loop Count"+i);
            if (we.getText().equals(RFQ_NO[i])) {
                 System.out.println("Matched at Row"+(i));

                    driver.findElement(By.xpath("//*[@id=\"table-1\"]/tbody/tr[" + (i + 1) + "]/td[7]/a/img"))
                            .click();
                    // *[@id="table-1"]/tbody/tr[2]/td[7]/a/img

            } else {
                System.out.println("Not Matched");
            }
        }
    }

}

}

错误:

线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 1 在 ListPackage.List_Class.main(List_Class.java:86)

你能帮忙吗?

【问题讨论】:

  • 完整代码:
  • 这里的第86行是哪一行?

标签: java selenium for-loop


【解决方案1】:

错误“java.lang.ArrayIndexOutOfBoundsException: 1”表示您正在尝试访问不存在的数组索引。

查看由于for循环条件行而发生错误的代码:

for (int i = 0; i <= allElements.size(); i++) 

上述for循环条件的正确替换应为:

for (int i = 0; i < allElements.size(); i++)

即将i &lt;= allElements.size() 替换为i &lt; allElements.size()

欲了解更多信息,请参阅链接: ArrayIndexOutOfBoundsException

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多