Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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