nullPointerException, хоте объект вроде бы есть.

Здравствуйте.

Помогите, пожалуйста, новичку найти причину nullPointerException.

Знаю, что причина в том, что приложение пытается использовать null, в том случае когда нужен объект, но как я понимаю объект у меня есть.

Код следующий:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

import java.util.concurrent.TimeUnit;

public class TS0001_SignIn_SignOut {

private WebDriver driver;
public LoginPage loginPage;
public HomePage homePage;

@Before
public void SetUp() {
System.setProperty(“webdriver.chrome.driver”, “C:\Users\IdeaProjects\testselenium\drivers\chromedriver.exe”);
driver = new ChromeDriver();
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.manage().window().maximize();
driver.get(“mysite.com”);

}

@Test
public void SignInCorrectData_SignOut(){
loginPage.SignIn(“username”, “password”);
homePage.SignOut();
}
пишет что в loginPage получается NullPointerException.

вот код с loginPage:

public class LoginPage {

private WebDriver driver;
public LoginPage(WebDriver driver) {
this.driver = driver;
}

private By usernameField = By.id(“username”);
private By passwordField = By.id(“password”);
private By signInButton = By.id(“sign-in-button”);

public void SignIn (String username, String password){
driver.findElement(usernameField).sendKeys(username);
driver.findElement(passwordField).sendKeys(password);
driver.findElement(signInButton).click();
}
Причем аналогичным образом создавал тест на другом сайте - все ок, никаких эксепшенов не выкидывал.

переменная объявлена но не инициализирована

1 лайк

У вас переменная loginPage непроинициализирована. Добавьте после driver.get(“mysite.com”); строку loginPage = new LoginPage(driver);

2 лайка

@nmcreature @Ostap_Oleksyn огромное спасибо!

Можно еще чуть-чуть улучшить исправив это

System.setProperty("webdriver.chrome.driver", "C:\Users\IdeaProjects\testselenium\drivers\chromedriver.exe");

И до самого теста сразу можете добавить след. код да бы не инициализировать в каждом тесте вашу страницу

public TS0001_SignIn_SignOut() {
loginPage = new LoginPage(driver);
homePage = new HomePage(driver);
}
1 лайк

спасибо за совет!