Java 它显示数组出绑定异常

Java 它显示数组出绑定异常,java,selenium,Java,Selenium,我想按以下顺序将其存储在Arraylist中: topcompany.geti.getText, 平均值exp.geti.getText, avg_sal.geti.getText, inlakhs.getj.getText, 圈_text.geti.getText, inlakhs.getj+1.getText 我的代码: List<WebElement> topcompany = driver.findElements(By.xpath("(//*[name()='svg'])

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

topcompany.geti.getText, 平均值exp.geti.getText, avg_sal.geti.getText, inlakhs.getj.getText, 圈_text.geti.getText, inlakhs.getj+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.getj+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);
                }
            }
        }
    }

inlakhs.getj+1.getText,此碎片可能是原因之一。此外,如果您可以正确格式化代码,则调试它会容易得多。此碎片显示数组超出范围。我同意,这是很难读取和理解的。我想将其存储在arraylist{company[0],avgsalary[0],avgexp[0],inlakhs[4],circletext中[0],inlakhs[5]