10
respostas

Não consigo logar!

Uso o exemplo da aula e da login inválido. Ps. não alterei o banco de dados

10 respostas

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