Getting java.lang.NullPointerException in cucumber selenium | Selenium Forum
N
nic.nrs Posted on 13/07/2019

Below is the error getting in running runner class file -

 

error in Console -  

@RegisterUser
Feature: Register User on automation practice online shopping portal

@RegisterUser @GoToSignUpPage:
Scenario: User create an account # src/test/resources/com/webautomation/feature/RegisterUsers.feature:5
Starting ChromeDriver 75.0.3770.140 (2d9f97485c7b07dc18a74666574f19176731995c-refs/branch-heads/3770@{#1155}) on port 32762
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
Jul 13, 2019 1:04:09 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
Given I open browsername1 # genericsteps.openBrowser1(String)
And I launch URL of Online Shopping portal # genericsteps.launchsite(String)
When I click on Sign-In Link_xpath # genericsteps.clicksigninlink(String)
I am on sign-up page
And I am at sign-up page # genericsteps.registerpage()
fname xpath ---//*[@id="email_create"]
fname ----someone@example123.com
When I enter the email_id at the email-id-xpath field # genericsteps.enteremail(String,String)
And click create_an_account_button_xpath # genericsteps.clickcreateanaccountbtn(String)
I am inside create an account page
Then I am taken to create an account page # genericsteps.intocreateanaccountpage()

@RegisterUser @EnterYourPersonalDetails
Scenario: Enter Personal and Address details # src/test/resources/com/webautomation/feature/RegisterUsers.feature:15
I am on create an account page
Given I am on create an account page # genericsteps.iamoncreateanaccountpage()
Salutation --Mr.
Objectkey.get(0)--- //*[@id="id_gender1"]
Objectkey.get(1)--- //*[@id="id_gender2"]
Salutation conditioned -- passed
exception occured ---java.lang.NullPointerException
When I select0 my salutation # genericsteps.select_salutation(String,String>)
fname xpath ---//*[@id="customer_firstname"]
fname ----Some
When enter1 fname at fname-xpath # genericsteps.fname(String,String)
java.lang.NullPointerException
at com.webautomation.webdriver.WebConnector.type(WebConnector.java:79)
at com.webautomation.step.genericsteps.fname(genericsteps.java:75)
at ?.enter1 fname at fname-xpath(file:src/test/resources/com/webautomation/feature/RegisterUsers.feature:19)

And enter2 lname at lname-xpath # genericsteps.lname(String,String)
And enter3 password at password-xpath # genericsteps.password(String,String)
And select4 day at day-name-select # genericsteps.day(String,String)
And select5 month at month-name-select # genericsteps.month(String,String)
And select6 year at year-name-select # genericsteps.year(String,String)
And enter7 company at company-xpath # genericsteps.company(String,String)
And enter8 address at address-xpath # genericsteps.address(String,String)
And enter9 city at city-xpath # genericsteps.city(String,String)
And select10 state at state-name-select # genericsteps.state(String,String)
And enter11 zipcode at zipcode-xpath # genericsteps.zipcode(int,String)
And select12 country at country-name-select # genericsteps.country(String,String)
And enter13 mob-number at mob-number-xpath # genericsteps.mobnumber(int,String)
And enter14 address-alias at address-alias-xpath # genericsteps.addressalias(String,String)
And click15 register-button-xpath # genericsteps.registerbutton(String)
Then I am taken to My Account page # genericsteps.registered()

Failure Trace - 

java.lang.NullPointerException
at com.webautomation.webdriver.WebConnector.type(WebConnector.java:79)
at com.webautomation.step.genericsteps.fname(genericsteps.java:75)
at ?.enter1 fname at fname-xpath(file:src/test/resources/com/webautomation/feature/RegisterUsers.feature:19)

 

----------------

Webconnector.java file code - 

 

package com.webautomation.webdriver;
import java.io.FileInputStream;
import java.util.List;
import java.util.Properties;
import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.ie.InternetExplorerDriver;
import org.openqa.selenium.support.ui.Select;

public class WebConnector {

WebDriver driver;
public String name;
public Properties prop;
// public readTestDataFromExcel readxl;


public WebConnector() {
try {
prop = new Properties();
FileInputStream fs = new FileInputStream(System.getProperty("user.dir")+"\\src\\test\\resources\\project.Properties");
prop.load(fs);
// readxl = new readTestDataFromExcel();
} catch (Exception e) {
e.printStackTrace();
}
}



public void openBrowser(String browserName) {

if(prop.getProperty(browserName).equals("Mozilla")) {
System.setProperty("webdriver.firefox.marionette","F:\\software\\BrowserDriver\\geckodriver.exe");
driver = new FirefoxDriver();
}else if(prop.getProperty(browserName).equals("Chrome")) {
System.setProperty("webdriver.chrome.driver","F:\\software\\BrowserDriver\\chromedriver.exe");
driver = new ChromeDriver();
} else if(prop.getProperty(browserName).equals("InternetExplorer")) {
System.setProperty("webdriver.ie.driver","F:\\software\\BrowserDriver\\IEDriverServer.exe");
driver = new InternetExplorerDriver();
}
driver.manage().window().maximize();
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);

}

public void navigate(String urlkey) {
driver.navigate().to(prop.getProperty(urlkey));
}

public void click(String objectkey) {
try {
driver.findElement(By.xpath(prop.getProperty(objectkey))).click();
}
catch (Exception e){
String existing_registered_email_id_error = "An account using this email address has already been registered. Please enter a valid password or request a new one.";
String invalid_email_id_error = "Invalid email address.";
WebElement existing_registered_email_id_error_Display_Area = driver.findElement(By.xpath("//*[@id=\"create_account_error\"]/ol/li"));
WebElement invalid_email_id_error_Display_Area = driver.findElement(By.xpath("//*[@id=\"create_account_error\"]/ol/li"));
if(existing_registered_email_id_error_Display_Area.getText().equalsIgnoreCase(existing_registered_email_id_error)){
System.out.println("Email id is already registed");
} else if (invalid_email_id_error_Display_Area.getText().equalsIgnoreCase(invalid_email_id_error)){
System.out.println("Entered Email id is invalid");
}
}
}

public void type(String objectkey, String data) {
System.out.println("fname xpath ---"+prop.getProperty(objectkey));
System.out.println("fname ----"+prop.getProperty(data));
String data1 = prop.getProperty(data);
driver.findElement(By.xpath(prop.getProperty(objectkey))).sendKeys(data1);
}

public void type(String objectkey, int data) {
String data_tostring = Integer.toString(data);
driver.findElement(By.xpath(prop.getProperty(objectkey))).sendKeys(prop.getProperty(data_tostring));
}

public void selectdropdown(String objectkey, String data) {

Select valuefromdropdown = new Select(driver.findElement(By.name(prop.getProperty(objectkey))));
valuefromdropdown.selectByVisibleText(data);
}

public void selectradioption(String data, List<String> Objectkey) {
System.out.println("Salutation --"+ prop.getProperty(data));
System.out.println("Objectkey.get(0)--- "+prop.getProperty(Objectkey.get(0)));
System.out.println("Objectkey.get(1)--- "+prop.getProperty(Objectkey.get(1)));
try {
if(prop.getProperty(data).contentEquals("Mr.")) {
System.out.println("Salutation conditioned -- passed");
driver.findElement(By.xpath(prop.getProperty(Objectkey.get(0)))).click();
System.out.println("Clicked 1.....");
}else {
System.out.println("Salutation conditioned -- failed");
driver.findElement(By.xpath(prop.getProperty(Objectkey.get(1)))).click();
System.out.println("Clicked 2.....");
}
}catch (Exception e) {
System.out.println("exception occured ---"+e);
}
}



}

 

---------------------

Feature file code - 

 

@RegisterUser
Feature: Register User on automation practice online shopping portal

@GoToSignUpPage:
Scenario: User create an account
Given I open browsername1
And I launch URL of Online Shopping portal
When I click on Sign-In Link_xpath
And I am at sign-up page
When I enter the email_id at the email-id-xpath field
And click create_an_account_button_xpath
Then I am taken to create an account page

@EnterYourPersonalDetails
Scenario: Enter Personal and Address details
Given I am on create an account page
When I select0 my salutation
|Mr-Salutation-xpath|Mrs-Salutation-xpath|
When enter1 fname at fname-xpath
And enter2 lname at lname-xpath
And enter3 password at password-xpath
And select4 day at day-name-select
And select5 month at month-name-select
And select6 year at year-name-select
And enter7 company at company-xpath
And enter8 address at address-xpath
And enter9 city at city-xpath
And select10 state at state-name-select
And enter11 zipcode at zipcode-xpath
And select12 country at country-name-select
And enter13 mob-number at mob-number-xpath
And enter14 address-alias at address-alias-xpath
And click15 register-button-xpath
Then I am taken to My Account page

#Examples:
#|salutation|fname |lname|password |day|month |year|company|address |city |state|zipcode|country |mob-number|address-alias|
#|Mr. |Nikhil|Gupta|password123|23 |August|1988|RBS |Cybercity|Gurugram|Texas|00001 |United States|9498070042|Office-Addr |

 

------------------

 

Generic STep Definition code below - 

 

package com.webautomation.step;

import java.util.List;

import com.webautomation.webdriver.WebConnector;

import io.cucumber.java.en.And;
import io.cucumber.java.en.Given;
import io.cucumber.java.en.Then;
import io.cucumber.java.en.When;

public class genericsteps {

WebConnector con;

public genericsteps(WebConnector con) {
this.con = con;
}

@Given("^I open ([^\"]*)$")
public void openBrowser1(String browserName){
// System.out.println("Opening Browser "+browserName);
con.openBrowser(browserName);
}

@And("^I launch ([^\"]*) of Online Shopping portal$")
public void launchsite(String URL) {
// System.out.println("Navigate to Automation Practice shopping portal" + URL);
con.navigate(URL);
}

@When ("^I click on Sign-In ([^\"]*)$")
public void clicksigninlink(String link) {
// System.out.println("Clicked sign-in option" + link);
con.click(link);
}

@And("^I am at sign-up page$")
public void registerpage() {
System.out.println("I am on sign-up page");
}


@When("^I enter the ([^\"]*) at the ([^\"]*) field$")
public void enteremail(String emailid, String email_field_locator) {
// System.out.println("enter the email id"+emailid+ "email xpath - "+email_field_locator);
con.type(email_field_locator, emailid);

}

@And("^click ([^\"]*)$")
public void clickcreateanaccountbtn(String create_an_account_button_xpath) {
// System.out.println("Clicked create an account button");
con.click(create_an_account_button_xpath);
}

@Then("^I am taken to create an account page$")
public void intocreateanaccountpage() {
System.out.println("I am inside create an account page");
}

@Given ("^I am on create an account page$")
public void iamoncreateanaccountpage() {
System.out.println("I am on create an account page");
}

@When ("^I select0 my ([^\"]*)$")
public void select_salutation(String salutation_value, List<String> radio_option_xpath) {
con.selectradioption(salutation_value, radio_option_xpath);
}
@When ("^enter1 ([a-zA-Z]{1,}) at ([^\"]*)$")
public void fname(String fname_var, String fname_xpath) {
con.type(fname_xpath, fname_var);

}
@And ("^enter2 ([a-zA-Z]{1,}) at ([^\"]*)$")
public void lname(String lname_var, String lname_xpath) {
con.type(lname_xpath, lname_var);
}
@And ("^enter3 ([^\"]*) at ([^\"]*)$")
public void password(String password_var, String password_xpath) {
con.type(password_xpath, password_var);
}
@And ("^select4 ([a-zA-Z0-9]{1,}) at ([^\"]*)$")
public void day(String day_var, String day_name_select) {
// String day_var_tostring = Integer.toString(day_var);
con.selectdropdown(day_name_select, day_var);
}
@And ("^select5 ([a-zA-Z]{1,}) at ([^\"]*)$")
public void month(String month_var, String month_name_select) {
con.selectdropdown(month_name_select, month_var);
}
@And ("^select6 ([a-zA-Z0-9]{1,}) at ([^\"]*)$")
public void year(String year_var, String year_name_select) {
// String year_var_tostring = Integer.toString(year_var);
con.selectdropdown(year_name_select, year_var);
}
@And ("^enter7 ([a-zA-Z0-9]{1,}) at ([^\"]*)$")
public void company(String company_var, String company_xpath) {
con.type(company_xpath, company_var);
}
@And ("^enter8 ([a-zA-Z0-9]{1,}) at ([^\"]*)$")
public void address(String address_var, String address_xpath) {
con.type(address_xpath, address_var);
}
@And ("^enter9 ([a-zA-Z]{1,}) at ([^\"]*)$")
public void city(String city_var, String city_xpath) {
con.type(city_xpath, city_var);
}
@And ("^select10 ([a-zA-Z]{1,}) at ([^\"]*)$")
public void state(String state_var, String state_name_select) {
con.selectdropdown(state_name_select, state_var);
}
@And ("^enter11 ([^\"]*) at ([^\"]*)$")
public void zipcode(int zipcode_var, String zipcode_xpath) {
// String zipcode_var_tostring = Integer.toString(zipcode_var);
con.type(zipcode_xpath, zipcode_var);
}
@And ("^select12 ([a-zA-Z]{1,}) at ([^\"]*)$")
public void country(String country_name_var, String county_name_select) {
con.selectdropdown(county_name_select, country_name_var);

}
@And ("^enter13 ([^\"]*) at ([^\"]*)$")
public void mobnumber(int mob_number_var, String mob_number_xpath) {
// String mob_number_var_tostring = Integer.toString(mob_number_var);
con.type(mob_number_xpath, mob_number_var);

}
@And ("^enter14 ([^\"]*) at ([^\"]*)$")
public void addressalias(String address_alias_var, String address_alias_xpath) {
con.type(address_alias_xpath, address_alias_var);

}
@And ("^click15 ([^\"]*)$")
public void registerbutton(String register_button_var) {
con.click(register_button_var);
}
@Then ("^I am taken to My Account page$")
public void registered() {
System.out.println("Successfully registered...!!");
}



// @Before("@GoToSignUpPage")
// public void init() {
// System.out.println("*************Init***************");
// }
//
//
// @After("@GoToSignUpPage")
// public void quit() {
// System.out.println("***********Quit**************");
// }

}

 

-----------------------------

Properties file - 

 

browsername1=Chrome
URL=http://automationpractice.com
Link_xpath=//*[@id="header"]/div[2]/div/div/nav/div[1]/a
email_id=someone@example123.com
email-id-xpath=//*[@id="email_create"]
create_an_account_button_xpath=//*[@id="SubmitCreate"]/span
email_id_already_registered_error_msg=//*[@id="create_account_error"]/ol/li
email_id_invalid=//*[@id="create_account_error"]/ol/li
Mr-Salutation-xpath=//*[@id="id_gender1"]
Mrs-Salutation-xpath=//*[@id="id_gender2"]
fname-xpath=//*[@id="customer_firstname"]
lname-xpath=//*[@id="customer_lastname"]
password-xpath=//*[@id="passwd"]
day-name-select="days"
month-name-select="months"
year-name-select="years"
company-xpath=//*[@id="company"]
address-xpath=//*[@id="address1"]
city-xpath=//*[@id="city"]
state-name-select="id_state"
zipcode-xpath=//*[@id="postcode"]
country-name-select="id_country"
mob-number-xpath=//*[@id="phone_mobile"]
address-alias-xpath=//*[@id="alias"]
register-button_xpath=//*[@id="submitAccount"]/span
salutation=Mr.
fname=Some
lname=One
password=password123
day=12
month=August
year=2000
company=RBS
address=Cybercity
city=Gurugram
state=Texas
zipcode=00001
country="United States"
mob-number=9498070042
address-alias=Office-Addr


N
nic.nrs Replied on 13/07/2019

Very urgent help please.....


A
Ashish Thakur Replied on 15/07/2019

Did you try debugging the code?

The error is possibly at WebConnector.java line number 79 or genericsteps.java line number 75.

Null Pointer Exce3ption tells us that the object is not properly initialized.