Selenium 从excel读取值后获取空指针异常

Selenium 从excel读取值后获取空指针异常,selenium,selenium-webdriver,nullpointerexception,Selenium,Selenium Webdriver,Nullpointerexception,Excel数据正在正确读取: 错误:info@gmail.com,1234444 info1@gmail.com,jjkkl;;jh [Utils]正在尝试创建C:\Users\priya\workspace\seleniumtopics\test output\Default suite\Default test.xml [Utils]目录C:\Users\priya\workspace\seleniumtopics\test output\Default suite 存在:正确 失败:输入数

Excel数据正在正确读取:

错误:info@gmail.com,1234444 info1@gmail.com,jjkkl;;jh [Utils]正在尝试创建C:\Users\priya\workspace\seleniumtopics\test output\Default suite\Default test.xml [Utils]目录C:\Users\priya\workspace\seleniumtopics\test output\Default suite 存在:正确 失败:输入数据(“info@gmail.com", "1234444") java.lang.NullPointerException 包装pckg2

import java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.DataFormatter;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.ss.usermodel.工作簿;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.firefox.FirefoxDriver;
导入org.openqa.selenium.support.ui.ExpectedConditions;
导入org.openqa.selenium.support.ui.WebDriverWait;
导入org.testng.Assert;
导入org.testng.annotations.BeforeClass;
导入org.testng.annotations.DataProvider;
导入org.testng.annotations.Test;
公共类DataInputfromExcel{
公共网络驱动程序;
公共网络驱动器,它等待;
@课前
公共作废设置(){
System.setProperty(“webdriver.firefox.marionete”,“D:\\desktop\\Selenium\\geckodriver-v0.9.0-arm7hf\\geckodriver”);
WebDriver=newfirefoxdriver();
驱动程序。获取(“https://mail.google.com");
等待=新的WebDriverWait(驱动程序,20);
//wait.until(ExpectedConditions.visibilityOf(driver.findelelement(By.cssSelector(“#帐户选择器添加帐户”))));
//driver.findElement(By.cssSelector(“帐户选择器添加帐户”))。单击();
}
@测试(dataProvider=“login”)
public void inputdata(字符串用户名、字符串密码){
System.out.println(用户名+”,“+密码);
wait.until(ExpectedConditions.visibilityOf(driver.findelelement)(通过.cssSelector(“#Email”)));
driver.findelelement(通过.cssSelector(“#Email”).sendKeys(用户名);
driver.findElement(By.cssSelector(“#next”)。单击();
wait.until(预期条件.visibilityOf(driver.findElement)(通过.cssSelector(“#Passwd”)));
driver.findElement(By.cssSelector(“#Passwd”)).sendKeys(密码);
driver.findElement(By.cssSelector(“#next”)。单击();
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector(“#errormsg_0_Passwd”))));
String errortext=driver.findelelement(By.cssSelector(“#errormsg_0_Passwd”)).getText();
Assert.assertEquals(errortext,“密码错误,请重试”);
}
@数据提供者(name=“login”)
公共对象[][]logindata()引发IOException{
对象[][]arraydata=getexceldata(“C:/Users/priya/Desktop/automationTopics.xlsx”,“Sheet3”);
返回数组数据;
}
私有字符串[][]getexceldata(字符串excelpath,字符串sheetname)引发IOException{
字符串[][]exceldata=null;
试一试{
FileInputStream fs=新的FileInputStream(excelpath);
XSSF工作簿wb=新XSSF工作簿(fs);
XSSFSheet sheet=wb.getSheet(sheetname);
int rowcount=sheet.getLastRowNum()-sheet.getFirstRowNum();
int colcount=sheet.getRow(0.getLastCellNum();
System.out.println(rowcount+,“+colcount);
exceldata=新字符串[rowcount+1][colcount];

对于(int i=0;i您在代码中声明了两次driver,并且当调用inputData方法时,driver对象未初始化。如果仍然面临相同问题,请尝试以下操作并通知我:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataInputfromExcel {
    public WebDriver driver;
    public WebDriverWait wait;
    @BeforeClass
    public void setup(){
        System.setProperty("webdriver.firefox.marionette","D:\\desktop\\Selenium\\geckodriver-v0.9.0-arm7hf\\geckodriver");
        driver = new FirefoxDriver();
        driver.get("https://mail.google.com");
         wait = new WebDriverWait(driver,20);
        //wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("#account-chooser-add-account"))));
        //driver.findElement(By.cssSelector("#account-chooser-add-account")).click();
        }
    @Test(dataProvider="login")
    public void inputdata(String username,String password){
        System.out.println(username +","+password);
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("#Email"))));
        driver.findElement(By.cssSelector("#Email")).sendKeys(username);
        driver.findElement(By.cssSelector("#next")).click();
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("#Passwd"))));
        driver.findElement(By.cssSelector("#Passwd")).sendKeys(password);
        driver.findElement(By.cssSelector("#next")).click();
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("#errormsg_0_Passwd"))));
        String errortext=driver.findElement(By.cssSelector("#errormsg_0_Passwd")).getText();
        Assert.assertEquals(errortext,"Wrong password. Try again.");
    }

    @DataProvider(name="login")
    public Object[][] logindata() throws IOException{
        Object[][] arraydata=getexceldata("C:/Users/priya/Desktop/automationTopics.xlsx","Sheet3");
        return arraydata;

    }
    private String[][] getexceldata(String excelpath, String sheetname) throws IOException {
        String[][] exceldata=null;
        try {
            FileInputStream fs = new FileInputStream(excelpath);
            XSSFWorkbook wb = new XSSFWorkbook(fs);
            XSSFSheet sheet= wb.getSheet(sheetname);
            int rowcount=sheet.getLastRowNum()-sheet.getFirstRowNum();
            int colcount=sheet.getRow(0).getLastCellNum();
            System.out.println(rowcount +","+colcount);
            exceldata = new String[rowcount+1][colcount];
            for(int i=0;i<rowcount+1;i++){
                 Row row = sheet.getRow(i);
                for(int j=0;j<row.getLastCellNum();j++){
                    //exceldata[i][j]=sheet.getRow(i).getCell(j).getRichStringCellValue().getString();
                    DataFormatter formatter = new DataFormatter(); //creating formatter using the default locale
                     Cell cell = row.getCell(j);
                     exceldata[i][j] = formatter.formatCellValue(cell);
                }
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


        return exceldata;
    }

}
import java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.IOException;
导入org.apache.poi.ss.usermodel.Cell;
导入org.apache.poi.ss.usermodel.DataFormatter;
导入org.apache.poi.ss.usermodel.Row;
导入org.apache.poi.ss.usermodel.工作簿;
导入org.apache.poi.xssf.usermodel.xssfheet;
导入org.apache.poi.xssf.usermodel.xssf工作簿;
导入org.openqa.selenium.By;
导入org.openqa.selenium.WebDriver;
导入org.openqa.selenium.firefox.FirefoxDriver;
导入org.openqa.selenium.support.ui.ExpectedConditions;
导入org.openqa.selenium.support.ui.WebDriverWait;
导入org.testng.Assert;
导入org.testng.annotations.BeforeClass;
导入org.testng.annotations.DataProvider;
导入org.testng.annotations.Test;
公共类DataInputfromExcel{
公共网络驱动程序;
公共网络驱动器,它等待;
@课前
公共作废设置(){
System.setProperty(“webdriver.firefox.marionete”,“D:\\desktop\\Selenium\\geckodriver-v0.9.0-arm7hf\\geckodriver”);
驱动程序=新的FirefoxDriver();
驱动程序。获取(“https://mail.google.com");
等待=新的WebDriverWait(驱动程序,20);
//wait.until(ExpectedConditions.visibilityOf(driver.findelelement(By.cssSelector(“#帐户选择器添加帐户”))));
//driver.findElement(By.cssSelector(“帐户选择器添加帐户”))。单击();
}
@测试(dataProvider=“login”)
public void inputdata(字符串用户名、字符串密码){
System.out.println(用户名+”,“+密码);
wait.until(ExpectedConditions.visibilityOf(driver.findelelement)(通过.cssSelector(“#Email”)));
driver.findelelement(通过.cssSelector(“#Email”).sendKeys(用户名);
driver.findElement(By.cssSelector(“#next”)。单击();
wait.until(预期条件.visibilityOf(driver.findElement)(通过.cssSelector(“#Passwd”)));
driver.findElement(By.cssSelector(“#Passwd”)).sendKeys(密码);
driver.findElement(By.cssSelector(“#next”)。单击();
wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector(“#errormsg_0_Passwd”))));
字符串errortext=driver.findElement(By.cssSelector(“#errormsg_0_Passwd”))
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class DataInputfromExcel {
    public WebDriver driver;
    public WebDriverWait wait;
    @BeforeClass
    public void setup(){
        System.setProperty("webdriver.firefox.marionette","D:\\desktop\\Selenium\\geckodriver-v0.9.0-arm7hf\\geckodriver");
        driver = new FirefoxDriver();
        driver.get("https://mail.google.com");
         wait = new WebDriverWait(driver,20);
        //wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("#account-chooser-add-account"))));
        //driver.findElement(By.cssSelector("#account-chooser-add-account")).click();
        }
    @Test(dataProvider="login")
    public void inputdata(String username,String password){
        System.out.println(username +","+password);
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("#Email"))));
        driver.findElement(By.cssSelector("#Email")).sendKeys(username);
        driver.findElement(By.cssSelector("#next")).click();
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("#Passwd"))));
        driver.findElement(By.cssSelector("#Passwd")).sendKeys(password);
        driver.findElement(By.cssSelector("#next")).click();
        wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("#errormsg_0_Passwd"))));
        String errortext=driver.findElement(By.cssSelector("#errormsg_0_Passwd")).getText();
        Assert.assertEquals(errortext,"Wrong password. Try again.");
    }

    @DataProvider(name="login")
    public Object[][] logindata() throws IOException{
        Object[][] arraydata=getexceldata("C:/Users/priya/Desktop/automationTopics.xlsx","Sheet3");
        return arraydata;

    }
    private String[][] getexceldata(String excelpath, String sheetname) throws IOException {
        String[][] exceldata=null;
        try {
            FileInputStream fs = new FileInputStream(excelpath);
            XSSFWorkbook wb = new XSSFWorkbook(fs);
            XSSFSheet sheet= wb.getSheet(sheetname);
            int rowcount=sheet.getLastRowNum()-sheet.getFirstRowNum();
            int colcount=sheet.getRow(0).getLastCellNum();
            System.out.println(rowcount +","+colcount);
            exceldata = new String[rowcount+1][colcount];
            for(int i=0;i<rowcount+1;i++){
                 Row row = sheet.getRow(i);
                for(int j=0;j<row.getLastCellNum();j++){
                    //exceldata[i][j]=sheet.getRow(i).getCell(j).getRichStringCellValue().getString();
                    DataFormatter formatter = new DataFormatter(); //creating formatter using the default locale
                     Cell cell = row.getCell(j);
                     exceldata[i][j] = formatter.formatCellValue(cell);
                }
            }


        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }


        return exceldata;
    }

}