它显示了数组出站异常

时间:2019-05-27 11:50:21

标签: java selenium

我想按以下顺序将其存储在Arraylist中:

  • topcompany.get(i).getText(),
  • avg_exp.get(i).getText(),
  • avg_sal.get(i).getText(),
  • inlakhs.get(j).getText(),
  • circle_text.get(i).getText(),
  • inlakhs.get(j + 1).getText()

我的代码:

 List<WebElement> topcompany = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='a']//*[name()='text']//*[name()='tspan' and @dy='4']"));
 List<WebElement> avg_exp = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='text' and @x='245']//*[name()='tspan' and @dy='4']"));
 List<WebElement> avg_sal = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='text' and @x='295']//*[name()='tspan' and @dy='4']"));
 List<WebElement> inlakhs = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='text' and @fill='#000000']//*[name()='tspan' and @dy='3.5']"));
 List<WebElement> circle_text = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='a']//*[name()='text' and @fill='#ffffff']//*[name()='tspan' and @dy='3.5']")); 

 for(int i=0;i<topcompany.size();i++) {
     for(int j=4;j<inlakhs.size();j++) {
         //main_list.add(new String[] {topcompany.get(i).getText(),avg_exp.get(i).getText(),avg_sal.get(i).getText(),inlakhs.get(j).getText(),circle_text.get(i).getText(),inlakhs.get(j+1).getText()});
     }
 }

2 个答案:

答案 0 :(得分:0)

很难理解您要实现的目标。

但是这是一个起点:如果我们请求的索引为负数或大于或等于数组的大小,则会抛出 ArrayIndexOutOfBoundsException

在您的情况下,inlakhs.get(j+1).getText()会在j达到 inlakhs.size() - 1 时引发错误,因为这样j将等于大小列表中的

您必须先解决此问题,然后该错误会消失

答案 1 :(得分:0)

您的问题显然是由访问索引超出范围的列表引起的。运行以下代码进行调试,并找出导致异常的列表尤其如此:

    List<WebElement> topcompany = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='a']//*[name()='text']//*[name()='tspan' and @dy='4']"));
    List<WebElement> avg_exp = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='text' and @x='245']//*[name()='tspan' and @dy='4']"));
    List<WebElement> avg_sal = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='text' and @x='295']//*[name()='tspan' and @dy='4']"));
    List<WebElement> inlakhs = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='text' and @fill='#000000']//*[name()='tspan' and @dy='3.5']"));
    List<WebElement> circle_text = driver.findElements(By.xpath("(//*[name()='svg'])[2]//*[name()='a']//*[name()='text' and @fill='#ffffff']//*[name()='tspan' and @dy='3.5']"));


    java.util.List<java.util.List<WebElement>> elements = new java.util.ArrayList<java.util.List<WebElement>>();
    for(int i=0;i<topcompany.size();i++)
    {
        for(int j=4;j<inlakhs.size();j++)
        {
            for (java.util.List<WebElement> list : elements) {
                try {
                    WebElement element = list.get(i);
                }
                catch (ArrayIndexOutOfBoundsException e) {
                    System.out.printf("%s caused an exception at index %d", element.toString(), i);
                }
            }
        }
    }