'Getting null pointer while declaring WebElementFacade in pageobject class
I was trying to implement page object model in serenity BDD, when I declared WebelementFacade in pageobject then I got nullpointer
Here is my pageobject class
package PageObjects;
import net.serenitybdd.core.annotations.findby.FindBy;
import net.serenitybdd.core.pages.WebElementFacade;
import net.thucydides.core.pages.PageObject;
public class LoginPage extends PageObject {
@FindBy(css ="#search_query_top") public WebElementFacade searchField;
public void login() {
open();
searchField.typeAndEnter("Blouse");
}
}
Here is my step file
public class Loginsteps {
LoginPage loginPage=new LoginPage();
@Step
public void DoLogin(){
loginPage.login();
}
}
Here is my test class
@RunWith(SerenityRunner.class)
public class LoginTest {
@Steps
Loginsteps loginsteps;
@Title("Executing login test")
@Test
public void DoLoginTest(){
loginsteps.DoLogin();
}
}
The console log is as follows:-
DoLoginTest
--------------------------------------------------------------------------------
[main] INFO net.serenitybdd.core.webdriver.driverproviders.ChromeDriverProvider - Using automatically driver download
[main] INFO io.github.bonigarcia.wdm.WebDriverManager - Using chromedriver 91.0.4472.101 (resolved driver for Chrome 91)
[main] INFO io.github.bonigarcia.wdm.WebDriverManager - Exporting webdriver.chrome.driver as /Users/keshavmac/.cache/selenium/chromedriver/mac64/91.0.4472.101/chromedriver
[main] INFO net.serenitybdd.core.webdriver.driverproviders.ProvideNewDriver - Instantiating driver
[main] INFO net.serenitybdd.core.webdriver.driverproviders.ProvideNewDriver - Driver capabilities: Capabilities {acceptInsecureCerts: false, browserName: chrome, goog:chromeOptions: {args: [], extensions: []}, loggingPrefs: org.openqa.selenium.logging...}
Starting ChromeDriver 91.0.4472.101 (af52a90bf87030dd1523486a1cd3ae25c5d76c9b-refs/branch-heads/4472@{#1462}) on port 18207
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
Jun 26, 2021 8:30:06 PM org.openqa.selenium.remote.ProtocolHandshake createSession
INFO: Detected dialect: W3C
java.lang.NullPointerException
at PageObjects.LoginPage.login(LoginPage.java:14)
at Steps.Loginsteps.DoLogin(Loginsteps.java:12)
at testcases.LoginTest.DoLoginTest(LoginTest.java:19)
[main] ERROR -
_____ ___ ___ _____ ___ ___ ___ ___ ___
|_ _| | __| / __| |_ _| | __| | _ \ | _ \ / _ \ | _ \
| | | _| \__ \ | | | _| | / | / | (_) | | /
|_| |___| |___/ |_| |___| |_|_\ |_|_\ \___/ |_|_\
Executing login test
---------------------------------------------------------------
[main] ERROR - Test failed at step: Do login
[main] ERROR -
[pool-1-thread-1] INFO net.thucydides.core.reports.ReportService - net.thucydides.core.reports.json.JSONTestOutcomeReporter@30b131b2: Generating report for test outcome: Login test:DoLoginTest
[pool-2-thread-1] INFO net.thucydides.core.reports.ReportService - net.thucydides.core.reports.html.HtmlAcceptanceTestReporter@38b8b6c0: Generating report for test outcome: Login test:DoLoginTest
Please help me out and try to identify the root cause of this nullpointer
Solution 1:[1]
This could be caused by a lot of things. My best guess would be to add Page Factory to your LoginPage. You can not use POM without Page Factory. Page factory example from one of my projects (I have changed class name to suit your purpose):
public LoginPage() {
PageFactory.initElements(Driver.instance() , this);
}
I am not a 100% sure this syntax is suitable for serenity projects, but try it.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dharman |
