Null Pointer Exception while running code using TestNG

Answered

I am trying to automate a Login and Logout Scenario in TestNG and passing the browser as parameter from XML on the basis of which chromedriver() instance will be created and the code will run.I have two classes TestRunner and Login where login method gets data (username and password) TestRunner and data is fetched from excel.

FAILED: Registration_data(“ashwin@gmail.com”, “ashwin123″)
java.lang.NullPointerException
at com.DataDriven.Login.login(Login.java:68)
at com.DataDriven.TestRunner.Registration_data(TestRunner.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:84)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:714)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:901)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1231)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:617)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291)
at org.testng.SuiteRunner.run(SuiteRunner.java:240)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1224)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1149)
at org.testng.TestNG.run(TestNG.java:1057)
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:111)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:204)

——————————————————————————–
package com.DataDriven;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class TestRunner {

@Test(dataProvider = “Authentication”)
public static void Registration_data(String sUserName, String sPassword)
throws Exception {

Login lp = new Login();
lp.login(sUserName, sPassword);
}

@DataProvider
public Object[][] Authentication() throws Exception {

Object[][] testObjArray = ReadData.getTableArray(
“F:\\Automation\\DataDrivenPractice\\DataFiles\\DataFile.xlsx”,
“Sheet1″);

return (testObjArray); } }

——————————————————————————–

package com.DataDriven;

import java.io.File;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Login {
WebDriver driver = null;

@Parameters(“browser”)
@BeforeClass
// Passing Browser parameter from TestNG xml
public void beforeTest(String browser) {

// If the browser is Firefox, then do this

if (browser.equalsIgnoreCase(“firefox”)) {

driver = new FirefoxDriver();

// If browser is IE, then do this

} else if (browser.equalsIgnoreCase(“chrome”)) {

// Here I am setting up the path for my IEDriver

driver = new ChromeDriver(); } }

public void login(String username, String password) {
try {
driver.get(“https://www.facebook.com/”);

driver.findElement(By.id(“email”)).sendKeys(username);
driver.findElement(By.id(“pass”)).sendKeys(password);
driver.findElement(By.id(“loginbutton”)).click();
driver.findElement(By.linkText(“Log Out”)).click();
}

catch (Exception e) {
File srcfile = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.FILE);

try {
FileUtils.copyFile(srcfile, new File(
“F:\\Automation\\Screenshots\\Login.jpg”));
} catch (Exception e1) {
e1.printStackTrace();
} } }}

——————————————————————————

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE suite SYSTEM “http://testng.org/testng-1.0.dtd”>
<suite name=”Suite” parallel=”none”>
<test name=”FirefoxTest”>
<parameter name=”browser” value=”chrome” />
<classes>
<class name=”com.DataDriven.TestRunner” />
<class name=”com.DataDriven.Login” />
</classes>
</test>
</suite>

Ashwin Train Asked on March 15, 2015 in Selenium WebDriver.
Add Comment
1 Answer(s)
Best answer

@DataProvider annotation is suppose to have name. which should be same as you have given in the @Test annotation.

Virender

Virender Singh Professor Answered on March 16, 2015.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.