title: java.lang.NullPointerException when executing cucumber feature file through step definition file using cucumber-junit with Java
body: <p>While running a cucumber feature file using junit with Java, I am getting a NULL pointer exception. I am not able to understand why this exception is coming up.<br>
  This is my step definition file, written in java.  </p>
  
  <pre><code>import java.util.List;
  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 pageObjects.CartPage;
  import pageObjects.Checkoutpage;
  import pageObjects.HomePage;
  import pageObjects.ProductListingPage;
  import cucumber.api.PendingException;
  import cucumber.api.java.en.Given;
  import cucumber.api.java.en.When;
  
  public class EndtoEndTest {
  
  WebDriver driver;
  
  @Given("^User is on Homepage$")
  public void user_is_on_Homepage() throws Throwable {
  
      System.setProperty("webdriver.chrome.driver", "C:\\Users\\Downloads\\chromedriver.exe");
      WebDriver driver = new ChromeDriver();
      driver.get("http://www.shop.demoqa.com");
      driver.manage().timeouts().implicitlyWait(20,TimeUnit.SECONDS);
      driver.manage().window().maximize();
  
  
  }
  
  @When("^he searches for \"([^\"]*)\"$")
  public void he_searches_for(String arg1) throws Throwable {
  
      HomePage home = new HomePage(driver);
      home.perform_Search(arg1);
  }
  
  @When("^Choose to buy the first item$")
  public void choose_to_buy_the_first_item() throws Throwable {
      ProductListingPage productListingPage = new ProductListingPage(driver);
      productListingPage.select_Product(0);
      productListingPage.clickOn_AddToCart(); 
  }
  
  @When("^moves to checkout from mini cart$")
  public void moves_to_checkout_from_mini_cart() throws Throwable {
      CartPage cartPage = new CartPage(driver);
      cartPage.clickOn_Cart();
      cartPage.clickOn_ContinueToCheckout();
  }
  
  @When("^enter personal details onn checkout page$")
  public void enter_personal_details_onn_checkout_page() throws Throwable {
  
  
      Checkoutpage checkoutPage = new Checkoutpage(driver);
      checkoutPage.fill_PersonalDetails();    
  }
  
  @When("^select same delivery address$")
  public void select_same_delivery_address() throws Throwable {
      Checkoutpage checkoutPage = new Checkoutpage(driver);
      checkoutPage.check_ShipToDifferentAddress(false);
  }
  
  @When("^select payment method as \"([^\"]*)\" payment$")
  public void select_payment_method_as_payment(String arg1) throws Throwable {
      Checkoutpage checkoutPage = new Checkoutpage(driver);
      checkoutPage.select_PaymentMethod("CheckPayment");
  }
  
  @When("^place the order$")
  public void place_the_order() throws Throwable {
      Checkoutpage checkoutPage = new Checkoutpage(driver);
      checkoutPage.check_TermsAndCondition(true);
      checkoutPage.clickOn_PlaceOrder();
  
      driver.quit();
  }
  }
  </code></pre>
  
  <p><strong>This is my PageObject File</strong></p>
  
  <pre><code>import org.openqa.selenium.Keys;
  import org.openqa.selenium.WebDriver;
  import org.openqa.selenium.WebElement;
  import org.openqa.selenium.support.FindBy;
  import org.openqa.selenium.support.How;
  import org.openqa.selenium.support.PageFactory;
  
  public class HomePage {
  
  WebDriver driver;
  
  public HomePage(WebDriver driver) {
      this.driver = driver;
      PageFactory.initElements(driver, this);
  }
  
  @FindBy(how=How.XPATH, using="//a[@class='noo-search icon_search']")
  private WebElement click_on_search_icon;
  
  @FindBy(how = How.XPATH, using="//input[@class='form-control']")
  private WebElement enter_data_for_search;
  
  public void perform_Search(String search) {
  
      click_on_search_icon.click();
      enter_data_for_search.sendKeys(search);
      enter_data_for_search.sendKeys(Keys.ENTER);
  
  }
  
  public void navigateTo_HomePage() {
      driver.get("http://www.shop.demoqa.com");
  }
  
  }
  </code></pre>
  
  <p>**Error stacktrace that I am getting while running the feature file:</p>
  
  <pre><code>java.lang.NullPointerException
      at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
      at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
      at com.sun.proxy.$Proxy13.click(Unknown Source)
      at pageObjects.HomePage.perform_Search(HomePage.java:27)
      at stepDefinations.EndtoEndTest.he_searches_for(EndtoEndTest.java:39)
      at ✽.When he searches for "dress"(src/test/resources/functionalTest/EndtoEndTest.feature:9)
  </code></pre>
  
  <p>I am not sure why I  am getting Null pointer Exception. Any help would be appreciated. Thanks**</p>