когда я создаю отдельный класс для шаблона объекта страницы, я получаю исключение нулевого указателя, но когда я вызываю или не использую отдельный класс для шаблона объекта страницы, все работает нормально.
я создал инициализирующий класс как базовый, проблема возникает в классе шаблонов объектов, так как я создаю их конструктор и init, но все еще получаю исключение нулевого указателя
public class InitializationOfBrowser {
public Properties readBrowserProperties = new Properties();
public WebDriver driver;
public InitializationOfBrowser() {
}
public WebDriver browserInitialization() throws IOException {
FileInputStream fileInputStreamForBrowserReading = new
FileInputStream("src\\main\\resources\\Browsers.properties");
readBrowserProperties.load(fileInputStreamForBrowserReading);
String Browser = readBrowserProperties.getProperty("browsers");
System.out.println(Browser);
switch(Browser){
case "chrome" : System.setProperty("webdriver.chrome.driver","browsers\\chromedriver.exe" );
driver = new ChromeDriver();
break;
case "firefox" :
System.out.println(Browser);
break;
case "IE" :
System.out.println(Browser);
break;
default:
System.out.println("Browser should be chrome, firefox or IE");
}
return driver;
}
public String openUrl(){
String url = readBrowserProperties.getProperty("url");
return url;
}
}
page object pattern class
public class LoginPageObjectPattern {
WebDriver driver;
public LoginPageObjectPattern(WebDriver driver){
//initializationOfBrowser = new InitializationOfBrowser();
this.driver = driver;
PageFactory.initElements(driver, this);
}
@FindBy( className = "ico-login")
WebElement clickOnLoginLink;
public WebElement getClickOnLoginLink()
{
return clickOnLoginLink;
}
@FindBy(xpath = "//div[@class='inputs']/input[@class='email']")
WebElement enterEmail;
public WebElement getEnterEmail()
{
return enterEmail;
}
@FindBy(xpath = "//div[@class='inputs']/input[@class='password']")
WebElement enterPassword;
public WebElement getEnterPassword(){
return enterPassword;
}
@FindBy(xpath = "//div[@class='buttons']/input[@type='submit']")
WebElement clickOnLoginButton;
public WebElement getClickOnLoginButton(){
return clickOnLoginButton;
}}
Stepdef class
public class StepDefsForRegistraion extends InitializationOfBrowser{
LoginPageObjectPattern loginPageObjectPattern;
WebDriver driverw = driver;
public StepDefsForRegistraion() throws IOException {
// loginPageObjectPattern = new LoginPageObjectPattern(driverw); either initialze this constructor or in userClickOnLogin function see null pionter exception
}
@When("User open browser")
public void user_open_browser() throws IOException {
browserInitialization();
}
@Then("User goto url")
public void user_goto_url() {
driver.get(openUrl());
}
@And("^User is on correct web page$")
public void userIsOnCorrectWebPage() throws Throwable {
String expectedTitle = driver.getTitle();
String actualTitle = "Demo Web Shop";
if(expectedTitle.equals(actualTitle)){
System.out.println("User is on correct web page");
}
Thread.sleep(5000);
}
@When("^User clicks on Login$")
public void userClicksOnLogin() throws Throwable {
loginPageObjectPattern = new LoginPageObjectPattern(driverw);
loginPageObjectPattern.getClickOnLoginLink().click();
// WebElement loginlink = loginPageObjectPattern.getClickOnLoginLink();
//// loginlink.click(); also try this way but have same result of null pointer}
исключение нулевого указателя
enter code here
попробуйте другой способ избавиться от этого, но мне не удалось. нужна твоя помощь