如何修复';java.lang.ArrayIndexOutOfBoundsException';尝试从Excel获取值并输入到类中时

如何修复';java.lang.ArrayIndexOutOfBoundsException';尝试从Excel获取值并输入到类中时,java,testng,Java,Testng,下面是我的简单Selenium TestNG程序,可以从excel工作表的第二行提取姓氏、名字和DOB,并在数据提供程序的帮助下在@Test注释中显示相同的内容。使用@BeforeTest注释在@Test之前打开浏览器 @Test(dataProvider="getData") public void processExcel(String lastName, String firstName, String DOB) throws InterruptedException

下面是我的简单Selenium TestNG程序,可以从excel工作表的第二行提取姓氏、名字和DOB,并在数据提供程序的帮助下在@Test注释中显示相同的内容。使用@BeforeTest注释在@Test之前打开浏览器

   @Test(dataProvider="getData")
    public void processExcel(String lastName, String firstName, String DOB) throws InterruptedException
    {

        System.out.println(lastName);
    }

    @DataProvider
    public Object[][] getData()
    {
        int colCount = 3;
        int rowNum = 1;
        String sheetName = "Excel_Sheet";
        int index = workbook.getSheetIndex(sheetName);

        Object[][] data= new Object[rowNum][colCount];

        for(int i = 1;i<colCount;i++)
        {

            sheet = workbook.getSheetAt(index);
            row = sheet.getRow(rowNum);
            cell = row.getCell(i);

            if(cell.getCellType()==Cell.CELL_TYPE_STRING)
                data[rowNum][i]= cell.getStringCellValue();
            else if(cell.getCellType()==Cell.CELL_TYPE_NUMERIC)
                data[rowNum][i]= String.valueOf(cell.getNumericCellValue());
            else if(cell.getCellType()==Cell.CELL_TYPE_BLANK)
                data[rowNum][i]= "";
            //data[rowNum][i]=excel.getCellData(sheetName,rowNum,i);
        }
        return data;
    }

删除了Selenium标记,因为此代码不使用Selenium。您应该为正在使用的Excel库添加标记。你能做的最好的事情就是学习如何调试你自己的代码。查找教程或查看IDE的文档。在脚本的早期设置一个断点,查看变量值,尤其是
数据
,并找出问题所在。这样,您就更可能知道如何修复它。数组的索引不是从0开始而不是从1开始吗?使用了所有Excel库并在下面的行中获取异常,我需要从索引1而不是从0开始。data[rowNum][i]=String.valueOf(cell.getNumericCellValue());删除了Selenium标记,因为此代码不使用Selenium。您应该为正在使用的Excel库添加标记。你能做的最好的事情就是学习如何调试你自己的代码。查找教程或查看IDE的文档。在脚本的早期设置一个断点,查看变量值,尤其是
数据
,并找出问题所在。这样,您就更可能知道如何修复它。数组的索引不是从0开始而不是从1开始吗?使用了所有Excel库并在下面的行中获取异常,我需要从索引1而不是从0开始。data[rowNum][i]=String.valueOf(cell.getNumericCellValue());
[Utils] [ERROR] [Error] java.lang.ArrayIndexOutOfBoundsException: 1
    at com.hie.HH_Regression.ADTA01_HH.getData(ADTA01_HH.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
    at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:74)
    at org.testng.internal.MethodInvocationHelper.invokeMethodNoCheckedException(MethodInvocationHelper.java:45)
    at org.testng.internal.MethodInvocationHelper.invokeDataProvider(MethodInvocationHelper.java:131)
    at org.testng.internal.Parameters.handleParameters(Parameters.java:706)
    at org.testng.internal.ParameterHandler.handleParameters(ParameterHandler.java:49)
    at org.testng.internal.ParameterHandler.createParameters(ParameterHandler.java:37)
    at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:924)
    at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
    at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
    at org.testng.TestRunner.privateRun(TestRunner.java:648)
    at org.testng.TestRunner.run(TestRunner.java:505)
    at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
    at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
    at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
    at org.testng.SuiteRunner.run(SuiteRunner.java:364)
    at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
    at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
    at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
    at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
    at org.testng.TestNG.runSuites(TestNG.java:1049)
    at org.testng.TestNG.run(TestNG.java:1017)
    at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
    at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
    at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)