Olá. Parece que minha versão do ChromeDriver não suporta minha versão do navegador. Como faço nesse caso? Vou colocar mais informações;
Meu código:
package br.com.alura.leilao.login;
import org.junit.jupiter.api.*;
class LoginTest {
private LoginPage paginaDeLogin;
@BeforeEach
public void beforeEach() {
this.paginaDeLogin = new LoginPage();
}
@AfterEach
public void afterEach() {
this.paginaDeLogin.fechar();
}
@Test
void deveriaEfetuarLoginComDadosValidos() {
paginaDeLogin.preencheFormularioDeLogin("fulano", "pass");
paginaDeLogin.efetuaLogin();
Assertions.assertFalse(paginaDeLogin.isPaginaDeLogin());
Assertions.assertEquals("fulano", paginaDeLogin.getNomeUsuarioLogado());
}
@Test
void naoDeveriaLogarComDadosInvalidos() {
paginaDeLogin.preencheFormularioDeLogin("invalido", "123123");
paginaDeLogin.efetuaLogin();
Assertions.assertTrue(paginaDeLogin.isPaginaDeLogin());
Assertions.assertNull(paginaDeLogin.getNomeUsuarioLogado());
Assertions.assertTrue(paginaDeLogin.contemTexto("Usuário e senha inválidos."));
}
@Test
void naoDeveriaAcessarPaginaRestritaSemEstarLogado() {
paginaDeLogin.navegaParaPaginaDeLances();
Assertions.assertTrue(paginaDeLogin.isPaginaDeLoginComDadosInvalidos());
Assertions.assertFalse(paginaDeLogin.contemTexto("Dados do leilão"));
}
}
package br.com.alura.leilao.login;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class LoginPage {
private static final String URL_LOGIN = "http://localhost:8080/login";
private WebDriver browser;
public LoginPage() {
System.setProperty("webdriver.chrome.driver", "drivers/chromedriver.exe");
this.browser = new ChromeDriver();
browser.navigate().to (URL_LOGIN);
}
public void fechar() {
this.browser.close();
}
public void preencheFormularioDeLogin(String userName, String pass) {
browser.findElement(By.id("username")).sendKeys(userName); // digita username
browser.findElement(By.id("password")).sendKeys(pass); // digita a senha
}
public void efetuaLogin() {
browser.findElement(By.id("login-form")).submit(); // envia o form
}
public boolean isPaginaDeLogin() {
return browser.getCurrentUrl().equals("http://localhost:8080/login");
}
public String getNomeUsuarioLogado() {
try {
return browser.findElement(By.id("usuario-logado")).getText();
} catch (NoSuchElementException e) {
return null;
}
}
public void navegaParaPaginaDeLances() {
browser.navigate().to("http://localhost:8080/leiloes/2");
}
public boolean contemTexto(String texto) {
return browser.getPageSource().contains(texto);
}
public boolean isPaginaDeLoginComDadosInvalidos() {
return browser.getCurrentUrl().equals(URL_LOGIN + "?error");
}
}
Minha versão do Chrome é: Versão 116.0.5845.141 (Versão oficial) 64 bits
O Erro que aparece é:
org.openqa.selenium.SessionNotCreatedException: session not created: This version of ChromeDriver only supports Chrome version 114
Current browser version is 116.0.5845.141 with binary path C:\Program Files\Google\Chrome\Application\chrome.exe
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'CORTEX-0241', ip: '192.168.0.26', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '11.0.14'
Driver info: driver.version: ChromeDriver
E dá nullPointer na variábel página de login
Suppressed: java.lang.NullPointerException
at br.com.alura.leilao.login.LoginTest.afterEach(LoginTest.java:16)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:686)
... 43 more