Я создаю проект Selenium с использованием Maven, в котором я пытаюсь прочитать «имя пользователя» и «пароль» из файла Excel (xlsx).
Вот код -
public class NewTest {
WebDriver driver;
@BeforeTest
public void setup() {
System.setProperty("webdriver.gecko.driver",Util.FIREFOX_PATH);
driver = new FirefoxDriver();
driver.navigate().to(Util.BASE_URL);
}
public void readExcel(String filePath, String fileName, String sheetName) throws IOException, InterruptedException {
File file = new File(filePath+"\\"+fileName);
FileInputStream fs = new FileInputStream(file);
Workbook workBook = null;
String fileExtensionName = fileName.substring(fileName.indexOf("."));
if (fileExtensionName.equals(".xlsx")) {
workBook = new XSSFWorkbook(fs);
}
if (fileExtensionName.equals(".xls")) {
workBook = new HSSFWorkbook(fs);
}
Sheet sheet = workBook.getSheet(sheetName);
int rowCount = sheet.getLastRowNum();
for (int i = 0; i <= rowCount; i++) {
Row row = sheet.getRow(i);
for (int j = 0; j < row.getLastCellNum(); j++) {
driver.findElement(By.xpath("//input[@type='text']")).sendKeys(sheet.getRow(i).getCell(j).getStringCellValue());
driver.findElement(By.xpath("//input[@type='password']")).sendKeys(sheet.getRow(i).getCell(j+1).getStringCellValue());
driver.findElement(By.xpath("//input[@type='submit']")).click();
Thread.sleep(5000);
String actualTitle = driver.getTitle();
String expectedTitle = "Home Page";
SoftAssert sassert = new SoftAssert();
sassert.assertEquals(actualTitle, expectedTitle);
sassert.assertAll();
break;
}
}
}
@Test
public static void callingFunction() throws IOException, InterruptedException {
NewTest newTest = new NewTest();
String filePath = "C:\\Users\\Sitesh\\Desktop";
newTest.readExcel(filePath, "Book2.xlsx", "Sheet1");
}
}
Я получаю следующую ошибку -
FAILED: callingFunction
java.lang.NullPointerException
at Guru99_Bank.Guru99_Bank.NewTest.readExcel(NewTest.java:59)
at Guru99_Bank.Guru99_Bank.NewTest.callingFunction(NewTest.java:78)
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:132)
at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:599)
at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174)
at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:822)
at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.util.ArrayList.forEach(Unknown Source)
at org.testng.TestRunner.privateRun(TestRunner.java:764)
at org.testng.TestRunner.run(TestRunner.java:585)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
at org.testng.SuiteRunner.run(SuiteRunner.java:286)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1218)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
at org.testng.TestNG.runSuites(TestNG.java:1069)
at org.testng.TestNG.run(TestNG.java:1037)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Ошибка, которую я получаю, находится в этой строке:
driver.findElement (By.xpath (// input [@ type = 'text'])). sendKeys (sheet.getRow (i) .getCell (j) .getStringCellValue ());