Uso o exemplo da aula e da login inválido. Ps. não alterei o banco de dados
Uso o exemplo da aula e da login inválido. Ps. não alterei o banco de dados
Oi Isabela
Rode o script abaixo no seu banco de dados:
INSERT INTO `users` (`user_id`, `email`, `enabled`, `username`, `role`, `password`) VALUES
(1, 'fulano@gmail.com', 1, 'fulano', 'USER', '$2a$10$8MeF8YTUTv22DVthkhOs3.WGT4W1Wp1xRXcRxTM12MgDzRviDpw7i'),
(2, 'ciclano@gmail.com', 1, 'ciclano', 'USER', '$2a$10$8MeF8YTUTv22DVthkhOs3.WGT4W1Wp1xRXcRxTM12MgDzRviDpw7i'),
(3, 'beltrano@gmail.com', 1, 'beltrano', 'USER', '$2a$10$8MeF8YTUTv22DVthkhOs3.WGT4W1Wp1xRXcRxTM12MgDzRviDpw7i');
INSERT INTO `leilao` (`id`, `data_abertura`, `nome`, `valor_inicial`, `usuario_user_id`) VALUES
(1, '2020-08-03', 'Tablet Xpto 3', 5.00, 1),
(2, '2020-08-03', 'Computador Z3', 500.00, 3);
INSERT INTO `lance` (`id`, `data`, `valor`, `leilao_id`, `usuario_user_id`) VALUES
(1, '2020-08-04', 10.00, 1, 3),
(2, '2020-08-04', 15.00, 1, 2);
Quando eu rodo a aplicação já não roda esse script?
Oi Isabela,
A senha dos usuários é: pass
Foi essa que você digitou?
Foi sim... user: fulano senha: pass
Oi Isabela,
pode postar aqui o código da sua classe de teste?
package br.com.alura.leilao;
import org.junit.Test; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach;
import br.com.alura.leilao.login.LoginPage;
import org.junit.Assert;
public class LoginTest {
private LoginPage paginaDeLogin;
@BeforeEach
public void beforeEach(){
this.paginaDeLogin = new LoginPage();
}
@AfterEach
public void afterEach(){
this.paginaDeLogin.fechar();
}
@Test
public void loginComDadosValidos() {
paginaDeLogin.preencheFormLogin("fulano", "pass");
paginaDeLogin.clicaNoBotaoSubmit();
Assert.assertFalse(paginaDeLogin.isPaginaDeLogin());
Assert.assertEquals("fulano", paginaDeLogin.getNomeUsuarioLogado());
}
@Test
public void loginComDadosInvalidos(){
paginaDeLogin.preencheFormLogin("invalido", "peeee");
paginaDeLogin.clicaNoBotaoSubmit();
Assert.assertTrue(paginaDeLogin.isPaginaDeLogin()); //deve manter a page login
Assert.assertTrue(paginaDeLogin.contemTexto("Usuário e senha inválidos.")); //deve mostra msg de erro
Assert.assertNull(paginaDeLogin.getNomeUsuarioLogado()); //nome usuario deve ser null
}
@Test
public void naoDeveAcessarPaginasSemLogar(){
paginaDeLogin.navegarParaPaginaLeiloes();
Assert.assertTrue(paginaDeLogin.isPaginaDeLogin());
//TODO verificar como fica a pagina de leiloes qnd está logado
}
}
Acredito que não seja nos testes pq não consigo logar nem testando manualmente :/
Segue a login page também!
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.quit();
}
public void preencheFormLogin(String user, String password) {
browser.findElement(By.id("user")).sendKeys(user);
browser.findElement(By.id("pass")).sendKeys("password");
}
public void clicaNoBotaoSubmit() {
//browser.findElement(By.id("login-form")).submit();
browser.findElement(By.id("login-form")).submit();
}
public boolean isPaginaDeLogin() {
return browser.getCurrentUrl().equals(URL_LOGIN);
}
public Object getNomeUsuarioLogado() {
try{
return browser.findElement(By.id("usuario-logado")).getText();
}
catch (NoSuchElementException e) {
return null;
}
}
public void navegarParaPaginaLeiloes() {
this.browser.getCurrentUrl().equals("http://localhost:8080/login/leiloes/2");
}
public boolean contemTexto(String texto) {
return browser.getPageSource().contains(texto);
}
Oi Isabela,
Estranho então. Algum problema com o seu projeto, pois eu baixei o projeto dessa atividade: https://cursos.alura.com.br/course/selenium-testes-automatizados-aceitacao-java/task/85577 e funcionou normalmente.
No sua classe LoginPage
está com erro no método preencheFormLogin:
browser.findElement(By.id("pass")).sendKeys("password");
Remova as aspas do password
:
browser.findElement(By.id("pass")).sendKeys(password);
verdade! percebi quando te mandei. obrigada pela dica ;)
quanto ao problema do login... acho que não seja problema no banco de dados, pois a pagina inicial (http://localhost:8080/leiloes) exibe os leiloes pré cadastrados no banco