Teoricamente meu fonte está idêntico ao do instrutor e está dando NPE
package br.com.felipe.leilao.acceptance.steps;
import org.junit.Assert;
import br.com.felipe.leilao.e2e.pages.Browser; import br.com.felipe.leilao.e2e.pages.LeiloesPage; import br.com.felipe.leilao.e2e.pages.LoginPage; import io.cucumber.java.pt.Dado; import io.cucumber.java.pt.Entao; import io.cucumber.java.pt.Quando;
public class LoginSteps {
private Browser browser;
private LoginPage loginPage;
private LeiloesPage leiloesPage;
@Dado("o usuario valido")
public void o_usuario_valido() {
browser = new Browser();
browser.seed();
loginPage = browser.getLoginPage();
}
@Quando("realiza login")
public void realiza_login() {
this.loginPage.realizaLoginComo("fulano", "pass");
}
@Entao("é redirecionado para a pagina de leiloes")
public void é_redirecionado_para_a_pagina_de_leiloes() {
Assert.assertTrue(this.leiloesPage.estaNaPaginaDeLeiloes());
}
@Dado("o usuario invalido")
public void o_usuario_invalido() {
browser = new Browser();
browser.seed();
loginPage = browser.getLoginPage();
}
@Quando("tenta se logar")
public void tenta_se_logar() {
this.loginPage.realizaLoginComo("fulano", "xxxx");
}
@Entao("continua na página de login")
public void continua_na_pagina_de_login() {
Assert.assertTrue(this.loginPage.estaNaPaginaDeLoginComErro());
}
}
O NPE ocorre neste momento: java.lang.NullPointerException at br.com.felipe.leilao.acceptance.steps.LoginSteps.éredirecionadopara_a_pagina_de_leiloes(LoginSteps.java:32) at ✽.é redirecionado para a pagina de leiloes(classpath:features/login.feature:8)
Porém a classe LeiloesPage se encontra com o mesmo método alterado na aula:
package br.com.felipe.leilao.e2e.pages;
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait;
public class LeiloesPage {
private WebDriver driver;
private static String PAGE_URL = "http://localhost:8080/leiloes";
public LeiloesPage(WebDriver driver) {
this.driver = driver;
}
public void visita() {
driver.get(PAGE_URL);
}
public boolean existe(String nomeProduto, String valor, String usuario) {
return driver.getCurrentUrl().endsWith("/leiloes") && driver.getPageSource().contains(nomeProduto) &&
driver.getPageSource().contains(valor);
}
public boolean estaNaPaginaDeLeiloes() {
return this.driver.getCurrentUrl().endsWith("/leiloes");
}
public NovoLeilaoPage visitaPaginaParaCriarUmNovoLeilao() {
WebDriverWait wait = new WebDriverWait(driver,5);
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("novo_leilao_link")));
WebElement href = driver.findElement(By.id("novo_leilao_link"));
wait.until(ExpectedConditions.elementToBeClickable(href));
href.click();
return new NovoLeilaoPage(driver);
}
public DetalhesDoLeilaoPage visitaLeilaoPaginaParaDarLance() {
driver.findElement(By.linkText("dar lance")).click();
return new DetalhesDoLeilaoPage(driver);
}
public AlterarLeilaoPage visitaPaginaParaAltearLeilao() {
driver.findElement(By.linkText("editar")).click();
return new AlterarLeilaoPage(driver);
}
public DetalhesDoLeilaoPage visitaPaginaDoLeilaoDo(String donoDoLeilao) throws Exception {
WebDriverWait wait = new WebDriverWait(driver,5);
String xpath = "//table[@class='table table-hover']/tbody/tr/td[contains(text(),'" +
donoDoLeilao+ "')]/following-sibling::td/a";
wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath(xpath)));
WebElement href = driver.findElement(
By.xpath(xpath));
wait.until(ExpectedConditions.elementToBeClickable(href));
href.click();
return new DetalhesDoLeilaoPage(driver);
}
public void esperaCarregar() {
WebDriverWait wait = new WebDriverWait(driver,5);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//h1[contains(text(),'Todos leilões')]")));
}
public boolean naoPodeDarLanceNoLeilaoCriado(String donoDoLeilao) {
WebElement href = driver.findElement(
By.xpath("//table[@class='table table-hover']/tbody/tr/td[contains(text(),'" +donoDoLeilao+ "')]/following-sibling::td/a"));
return href.getText().contains("editar");
}
}
O que será que pode ser? quando eu comento a linha
@Entao("é redirecionado para a pagina de leiloes")
public void é_redirecionado_para_a_pagina_de_leiloes() {
// Assert.assertTrue(this.leiloesPage.estaNaPaginaDeLeiloes());
}
o teste passa