In my test framework, I have a DriverInitializer
class that initializes the WebDriver
and WebDriverWait
instances (instead of initializing it on every class). The page object classes extend this class to access the WebDriver
.
I'm getting a nullpointer
exception thrown while trying to access the WebDriverWait
instance. See void
method init_webdriver_wait
below:
public class DriverInitializer {
protected WebDriver driver;
protected WebDriverWait wdw;
protected final long timeInSeconds = 30;
public DriverInitializer(WebDriver driver) {
this.driver = driver;
}
public WebDriver getDriver() {
return driver;
}
public PropertyConfig goToHome() {
PropertyConfig pc = new PropertyConfig(driver);
pc.getAppUrl();
return pc;
}
public void init_webdriver_wait() {
try {
wdw = new WebDriverWait(driver, timeInSeconds);
}
catch(Exception e) {
// This error message is being triggered
// and always says that the WebDriverWait instance is null.
System.out.println("Error in DriverInitializer " + e.getMessage());
}
}
}
In my second class, the LandingPage
page factory class, I extended the DriverInitializer
class:
public class LandingPage extends DriverInitializer {
@FindBy(how=How.LINK_TEXT, using="REGISTER")
WebElement register_link;
@FindBy(how=How.LINK_TEXT, using="LOGIN")
WebElement login_link;
public LandingPage(WebDriver driver) {
super(driver);
PageFactory.initElements(driver, this);
}
public void locate_register_link() throws InterruptedException {
try {
init_webdriver_wait();
if(wdw != null) {
// Sample check if the WebDriverWait instance is null.
wdw.until(ExpectedConditions.elementToBeClickable(register_link));
Thread.sleep(3000);
}
else {
// This error message is triggered.
// It says that the WebDriverWait instance is null.
System.out.println("WDW is null -> LandingPage.java");
}
}
catch(Exception e) {
System.out.println("Error in LandingPage => " + e.getMessage());
}
}
}
Why does it always return a null pointer exception on my WebDriverWait
instance?