Cześć, po uruchomieniu testu skrypt wysypuje się podczas próby wykonania:
@Test
public void verifyIsLogged() {
String isTrue = homePage.isLogged();
Assert.assertEquals(isTrue, "Jakiś tam tekst");
}
Wyrzuca wyjątek:
java.lang.NullPointerException
at com.automation.tests.HomePageTest.verifyIsLogged(HomePageTest.java:31)
Klasy z których korzysta skrypt:
HomePageTest
public class HomePageTest extends TestBase {
LoginPage loginPage;
HomePage homePage;
@BeforeMethod
public void setUp() {
initialization();
loginPage = new LoginPage();
loginPage.doLogin(prop.getProperty("user"), prop.getProperty("pass"));
}
/*@Test(*//*priority = 1*//*)
public void verifyHomePageTitle() {
boolean flag = homePage.validateHomePageTitle();
Assert.assertTrue(flag);
}*/
@Test
public void verifyIsLogged() {
String isTrue = homePage.isLogged();
Assert.assertEquals(isTrue, "Jakiś tam tekst");
}
@AfterMethod
public void tearDown() {
driver.quit();
}
}
HomePage
public class HomePage extends TestBase {
@FindBy(xpath = ".//*[contains(text(), 'Zalogowany')]")
WebElement homePageTitle;
public HomePage() {
PageFactory.initElements(driver, this);
}
public String isLogged() {
return driver.getTitle();
}
}
LoginPageTest
public class LoginPageTest extends TestBase {
LoginPage loginPage;
@BeforeMethod
public void setUp() {
initialization();
loginPage = new LoginPage();
/*loginPage.doLogin(prop.getProperty("user"), prop.getProperty("pass"));*/
}
@Test(priority = 0)
public void verifyPageTitle() {
String title = loginPage.validateLoginPageTitle();
Assert.assertEquals(title, "Jakiś tam tekst");
}
@Test(priority = 1)
public void loginTest() {
loginPage.doLogin(prop.getProperty("user"), prop.getProperty("pass"));
}
@AfterMethod
public void tearDown() {
driver.quit();
}
}
TestBase
public class TestBase {
public static WebDriver driver;
public static Properties prop;
public static long PAGE_LOAD_TIMEOUT = 20;
public static long IMPLICIT_WAIT = 20;
public TestBase() {
try {
prop = new Properties();
FileInputStream ip = new FileInputStream("src/test/java/*.properties");
prop.load(ip);
/*System.out.println(prop.getProperty("url"));
System.out.println(prop.getProperty("user"));
System.out.println(prop.getProperty("pass"));*/
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void initialization() {
System.setProperty("webdriver.gecko.driver", "drivers/geckodriver.exe");
driver = new FirefoxDriver();
driver.manage().window().maximize();
driver.manage().deleteAllCookies();
driver.manage().timeouts().pageLoadTimeout(PAGE_LOAD_TIMEOUT, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(IMPLICIT_WAIT, TimeUnit.SECONDS);
driver.get(prop.getProperty("url"));
}
}
LoginPage
public class LoginPage extends TestBase {
@FindBy(name = "username")
WebElement username;
@FindBy(name = "password")
WebElement password;
@FindBy(id = "zaloguj")
WebElement submit;
public LoginPage() {
PageFactory.initElements(driver, this);
}
public String validateLoginPageTitle() {
return driver.getTitle();
}
public LoginPage doLogin(String user, String pass) {
username.sendKeys(user);
password.sendKeys(pass);
submit.click();
return new LoginPage();
}
}
Może ktoś udzielić rady co tu jest nie tak? Dodam że test LoginPageTest wykonuje się bez błędu, stąd moje zdziwienie że w drugim przypadku leci wyjątek.