java.lang.NullPointerException when running testcase via Selenium java.lang.NullPointerException when running testcase via Selenium selenium selenium

java.lang.NullPointerException when running testcase via Selenium


You need to initialize your WebDriver first. As I seeing you are creating the reference of WebDriver but not initialized, try as below :-

WebDriver driver = new ChromeDriver(); //or other driver which you want

Note :- If you want to initialize ChromeDriver you need to download chromedriver and set system property before initialize driver as :-

System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");

So details answer like as below :-

public class VendorsHomePageTest {    public WebDriver driver;    @Test    public void verifyVendorsHomePageTest() throws Exception    {        System.setProperty("webdriver.chrome.driver", "path/to/chromedriver");        driver = new ChromeDriver(); //or other driver which you want        LoginIntoVendors login=PageFactory.initElements(driver, LoginIntoVendors.class);        login.verifyLoginVendors();        VendorsHomePageApp vhpapp= PageFactory.initElements(driver, VendorsHomePageApp.class);        //driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);        Thread.sleep(3000);        vhpapp.clickOnNotificationsTab();        vhpapp.clickOnProfileTab();        vhpapp.clickOnTendersTab();        vhpapp.clickOnDashboardTab();        vhpapp.clickOnFirstTender();    }}

Edited :- You need to create separate class which gives you WebDriver instance as below :-

public class DriverInit {    public WebDriver driver;    private static DriverInit driverInit = null;    public static DriverInit getInstance() {        if (driverInit == null) {            driverInit = new DriverInit();        }        return driverInit;    }    private DriverInit() {        this.driver = new FirefoxDriver();        this.driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);        this.driver.get("******");    }    public WebDriver getDriver() {        return this.driver;    }

now you can call it into LoginIntoVendors as below :-

public class LoginIntoVendors {    @Test       public void verifyLoginVendors() throws Exception       {           WebDriver driver = DriverInit.getInstance().getDriver();           IntiationPage vendorInit=PageFactory.initElements(driver, IntiationPage.class);           vendorInit.clickOnLoginButton();           VendorsLoginAction Loginven=PageFactory.initElements(driver, VendorsLoginAction.class);           Loginven.vendorlogin("***","***@gmail.com", "****");           String title = driver.getTitle();           System.out.println("Title is  :" + title  );       }}

and in the VendorsHomePageTest as below :-

public class VendorsHomePageTest {    public WebDriver driver;    @Test    public void verifyVendorsHomePageTest() throws Exception    {        driver = DriverInit.getInstance().getDriver();        LoginIntoVendors login=PageFactory.initElements(driver, LoginIntoVendors.class);        login.verifyLoginVendors();        VendorsHomePageApp vhpapp= PageFactory.initElements(driver, VendorsHomePageApp.class);        //driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);        Thread.sleep(3000);        vhpapp.clickOnNotificationsTab();        vhpapp.clickOnProfileTab();        vhpapp.clickOnTendersTab();        vhpapp.clickOnDashboardTab();        vhpapp.clickOnFirstTender();    }}

Hope it helps..:)


Your driver seems to be null what you can do to avoid this situation is to instantiate your driver reference.

In your test class you can instantiate your driver.

public class VendorsHomePageTest {    public WebDriver driver;    @Test    public void verifyVendorsHomePageTest() throws Exception {        driver = new FirefoxDriver(); // or whatever browser you want.        // Here you can initialise the elements in `PageObject` class.        VendorsHomePageApp vhpapp= PageFactory.initElements(driver, VendorsHomePageApp.class);        // Rest of your code    }}