Skip to content
Advertisement

I am getting Null pointer Exception while fetching data from the excel sheet [duplicate]

Code:

public class ContactUsFormTest {

WebDriver driver;
@BeforeMethod
public void run()
{
System.setProperty("webdriver.chrome.driver", "Driver Path");
driver=new ChromeDriver();
driver.get("URL");
driver.manage().deleteAllCookies();
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

}
@Test(dataProvider="contactUs")
public void contactUs(String firstname,String preference,String lastname,String email,String text,String phone) throws InterruptedException
{
   
    driver.findElement(By.id("first_name")).sendKeys(firstname);
    //drop down handling
    Select sel = new Select(driver.findElement(By.id("preference")));
    sel.selectByVisibleText(preference);
    driver.findElement(By.id("last_name")).sendKeys(lastname);
    driver.findElement(By.id("email")).sendKeys(email);
    driver.findElement(By.id("textarea")).sendKeys(text);
    driver.findElement(By.id("phone")).sendKeys(phone);
    Thread.sleep(2000);
    driver.findElement(By.name("submit")).click();
    Thread.sleep(3000);
    //Validation
    Assert.assertTrue(driver.getTitle().contains("Successful submission"), "Page title verified-Submission UnSuccessful");
    System.out.println("Page title verified-Successful submission");

}

@DataProvider(name="contactUs")
public String[][] formData() throws Exception
{
    Thread.sleep(3000);
    ExcelDataConfig eData=new ExcelDataConfig("Excel sheet path");
    int rows=eData.getRowCount(0);
   
    String[][] data1=new String[rows][6];
   
    for(int i=0;i<rows;i++)
    {
        data1[i][0]=eData.getData(0, i, 0);//first name
        data1[i][1]=eData.getData(0, i, 1);//preference
        data1[i][2]=eData.getData(0, i, 2);//last name
        data1[i][3]=eData.getData(0, i, 3);//email
        data1[i][4]=eData.getData(0, i, 4);//text
        data1[i][5]=eData.getData(0, i, 5);//phone
    }
    return data1;
 }

}

I am fetching the data from the excel sheet while performing test I am getting below error.

Error:

[Utils] [ERROR] [Error] java.lang.NullPointerException at dataDrivenFramework.dataDrivenFramework.ExcelDataConfig.getData(ExcelDataConfig.java:31) at dataDrivenFramework.dataDrivenFramework.ContactUsFormTest.formData(ContactUsFormTest.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

Here is ExcelDataConfig class:

public class ExcelDataConfig {
XSSFWorkbook wb;
XSSFSheet sheet1;

//Constructor
public ExcelDataConfig(String excelpath) {
        
try {
    File file=new File(excelpath); 
    FileInputStream fis=new FileInputStream(file);
    wb=new XSSFWorkbook(fis);
} 
catch (Exception e) {
    
    System.out.println(e.getMessage());

}

}

public String getData(int sheetNumber,int row,int column) {
    sheet1=wb.getSheetAt(sheetNumber);
    String data=sheet1.getRow(row).getCell(column).getStringCellValue();
    
    return data;
}


public int getRowCount(int sheetIndex)
{
    int row=wb.getSheetAt(sheetIndex).getLastRowNum();
    row=row+1;
    return row;
    
}

}

I have no clue why I am getting this.

Advertisement

Answer

There are many possiblities. The requested sheet may not exist. Or the row. Or the cell. You should add null checks.

public String getData(int sheetNumber,int row,int column) {
    sheet1=wb.getSheetAt(sheetNumber);
    if (sheet1 == null) {
        throw new IllegalArgumentException("Sheet number " + sheetNumber + " does not exist."
    }
    if (sheet1.getRow(row) == null) {
        throw new IllegalArgumentException("Row " + row + " in sheet " + sheetNumber + " does not exist."
    }
    if (sheet1.getRow(row).getCell(column) == null) {
        throw new IllegalArgumentException("Cell " + column + " in sheet " + sheetNumber + " and row " + row + " does not exist."
    }
    String data=sheet1.getRow(row).getCell(column).getStringCellValue();
    
    return data;
}

Try to learn about NullpointerExceptions and how to fix them.

8 People found this is helpful
Advertisement