getting java.lang.NullPointerException in cucumber selenium
Below is the error getting in running runner class file -
@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 [email protected] 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()
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); } } }
---------------------
@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**************"); // } }
-----------------------------
browsername1=Chrome URL=http://automationpractice.com Link_xpath=//*[@id="header"]/div[2]/div/div/nav/div[1]/a [email protected] 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
Very urgent help please.....
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.
We offer online selenium and UFT/QTP training. The course is very comprehensive and covers every aspect of automation testing with UFT/QTP and selenium. All types of frameworks are covered in depth - data driven framework, hybrid framework, page object model with a live project
© 2020 Whizdom Trainings. All rights Reserved - Powered by Whizdom Trainings