java.lang.NullPointerException when running testcase via Selenium

39,001

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..:)

Share:
39,001
sandeep kumar
Author by

sandeep kumar

QA Analyst at Cbcrunch Technologies Pvt Ltd.

Updated on June 09, 2020

Comments

  • sandeep kumar
    sandeep kumar almost 4 years

    I am facing an issue with NullPointerException. I tried as much as possible but I'm unable to resolve this. I am implementing a POM model(Selenium) for my project.

    The page:

    public class VendorsHomePageApp 
    {
        WebDriver driver;
    
        public VendorsHomePageApp(WebDriver driver)
        {
            this.driver=driver;
        }
    
        @FindBy(how=How.XPATH,using=".//*[@id='navbarCollapse']/ul[1]/li[1]/a")
        WebElement dashboardTab;
    
        @FindBy(how=How.XPATH,using=".//*[@id='navbarCollapse']/ul[1]/li[2]/a")
        WebElement tendersTab;
    
        @FindBy(how=How.XPATH,using=".//*[@id='navbarCollapse']/ul[1]/li[3]/a")
        WebElement notificationsTab;
    
        @FindBy(how=How.XPATH,using=".//*[@id='navbarCollapse']/ul[1]/li[4]/a")
        WebElement profileTab;
    
        @FindBy(how=How.XPATH,using=".//*[@id='navbarCollapse']/ul[2]/li/a")
        WebElement vendorName;
    
        @FindBy(how=How.XPATH,using=".//*[@id='navbarCollapse']/ul[2]/li/ul/li[1]/a")
        WebElement vendorHelp;
    
        @FindBy(how=How.XPATH,using=".//*[@id='navbarCollapse']/ul[2]/li/ul/li[3]/a")
        WebElement vendorSignOut;
    
        @FindBy(how=How.XPATH,using="html/body/section/div/div/div/div[2]/div/table/tbody/tr[1]/td[1]/a")
        WebElement firstTender;
    
        @FindBy(how=How.XPATH,using="html/body/section/div/div/div/div[2]/div/table/tbody/tr[2]/td[1]/a")
        WebElement secondTender;
    
        @FindBy(how=How.XPATH,using="html/body/section/div/div/div/div[2]/div/table/tbody/tr[3]/td[1]/a")
        WebElement thirdTender;
    
        public void clickOnDashboardTab()
        {
            dashboardTab.click();
        }
    
        public void clickOnTendersTab()
        {
            tendersTab.click();
        }
    
        public void clickOnNotificationsTab()
        {
            notificationsTab.click();
        }
    
        public void clickOnProfileTab()
        {
            profileTab.click();
        }
    
        public void clickOnFirstTender()
        {
            firstTender.click();
        }
    }
    

    TestClass:

    public class VendorsHomePageTest 
    {
        public WebDriver driver;
        @Test
        public void verifyVendorsHomePageTest() throws Exception
        {
            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();
        }
    }
    

    Error log:

    FAILED: verifyVendorsHomePageTest
    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.$Proxy4.click(Unknown Source)
        at com.digitalmqc.automation.vendorspages.VendorsHomePageApp.clickOnNotificationsTab(VendorsHomePageApp.java:60)
        at com.digitalmqc.automation.vendorstests.VendorsHomePageTest.verifyVendorsHomePageTest(VendorsHomePageTest.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:497)
        at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
        at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
        at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
        at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
        at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
        at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
        at org.testng.TestRunner.privateRun(TestRunner.java:782)
        at org.testng.TestRunner.run(TestRunner.java:632)
        at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
        at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
        at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
        at org.testng.SuiteRunner.run(SuiteRunner.java:268)
        at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
        at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
        at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
        at org.testng.TestNG.run(TestNG.java:1064)
        at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:113)
        at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:206)
        at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:177)
    

    Class:

    public class LoginIntoVendors 
    {
        @Test
        public void verifyLoginVendors() throws Exception
        {
            WebDriver driver= new FirefoxDriver();
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            driver.get("******");
    
            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  );
       }
    }
    

    Any help?