它显示数组出界异常



我想按以下顺序将其存储在数组列表中:

  • 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()});
     }
 }

很难理解你想要实现的目标。

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

在您的情况下,当j达到inlakhs.size() - 1时,inlakhs.get(j+1).getText()将抛出错误,因为那时j将等于列表的大小。

您必须先解决此问题,您将看到此错误消失

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

    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);
                }
            }
        }
    }

最新更新