Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

senha ''pass'' não funciona

package br.com.alura.leilao.login;

import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class TestLogin {
    @Test
    public void deveriaLogarTest() {
        System.setProperty("webdriver.chrome.driver",
                "C:\\\\Users\\pamela.santos\\Documents\\2019-selenium-java-projeto_inicial\\drivers\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://localhost:8080/login");
        driver.findElement(By.id("username")).sendKeys("fulano");
        driver.findElement(By.id("password")).sendKeys("pass");
        driver.findElement(By.id("botao-login")).submit();

        
        //Verificação
        Assert.assertFalse(driver.getCurrentUrl().equals("http://localhost:8080/login"));
        Assert.assertEquals("fulano", driver.findElement(By.id("usuario-logado")).getText());

        driver.quit();
    }
}

Aba Failure Trace: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

11 respostas

Isso pode acontecer por diversas razões, como a senha estar incorreta ou o sistema não reconhecer o usuário.

A primeira coisa que eu faria é verificar se a senha está correta. Talvez você precise mudar a senha no código para a senha correta do usuário "fulano". Se a senha estiver correta e o teste ainda falhar, pode ser que haja algum problema no sistema ou na forma como ele lida com o login.

Dê uma olhada no log de erro para ver se há alguma mensagem útil que indique por que o login está falhando. Pode ser algo relacionado à autenticação, ao processo de login em si ou a algum problema de comunicação com o sistema.

Além disso, certifique-se de que o ambiente de teste está configurado corretamente. Pode ser útil verificar se o usuário "fulano" com a senha "pass" realmente existe no sistema de teste e se as configurações de ambiente estão corretas.

Em resumo, verifique a senha, examine as mensagens de erro e certifique-se de que o ambiente de teste está configurado corretamente. Isso deve ajudar a identificar e resolver o problema.

Oi, eu verifiquei tudo isso, inclusive tentei acessar direto pelo navegador sem ser pelo teste, e mesmo assim nao reconhece a senha ''pass''. No arquivo do banco está com os logins conforme baixei do arquivo do projeto.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Oi!

Eu baixei o projeto desse link: https://cursos.alura.com.br/course/selenium-testes-automatizados-aceitacao-java/task/85577

Importei no Eclipse, rodei a classe main (LeilaoApplication), abri a página de login no navegador (http://localhost:8080/login) e conseguir realizar o login com o usuário fulano e a senha pass

Tenta simular dessa forma e continuar a partir desse ponto, pois é o projeto inicial.

Oi, fiz exatamente isso, baixando um novo projeto e repetindo os passos que tu fez e mesmo assim, o user fulano e senha pass nao funcionam. OBS: Tem alguma forma de mudar a senha dentro do projeto? Insira aqui a descrição dessa imagem para ajudar na acessibilidadeNão sei mais o que pode ser, fiz exatamente todos os passos.

package br.com.alura.leilao;

import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.junit.Assert;

public class HelloWorldSelenium {

    @Test
    public void helloTest() throws InterruptedException {
        System.setProperty("webdriver.chrome.driver",
                "C:\\\\Users\\pamela.santos\\Downloads\\2019-selenium-java-aula_1\\2019-selenium-java-aula_1\\drivers\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://localhost:8080/login");
        driver.findElement(By.id("username")).sendKeys("fulano");
        driver.findElement(By.id("password")).sendKeys("pass");
        driver.findElement(By.id("form-login")).submit();
        

        Assert.assertTrue(driver.getCurrentUrl().equals("http://localhost:8080/leiloes"));
        Thread.sleep(20000);
        driver.quit();
    }

}

Manda aqui o log completo que saí no console do Eclipse assim que você executa a classe main

org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#usuario\-logado"}
  (Session info: chrome=119.0.6045.160)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'INF-1690', ip: '192.168.0.17', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_92'
Driver info: org.openqa.selenium.chrome.ChromeDriver
Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 119.0.6045.160, chrome: {chromedriverVersion: 119.0.6045.105 (38c72552c5e..., userDataDir: C:\Users\PAMELA~1.SAN\AppDa...}, fedcm:accounts: true, goog:chromeOptions: {debuggerAddress: localhost:56552}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, proxy: Proxy(), setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:credBlob: true, webauthn:extension:largeBlob: true, webauthn:extension:minPinLength: true, webauthn:extension:prf: true, webauthn:virtualAuthenticators: true}
Session ID: e0767931ad0cbf1057b3a32398a4c982
*** Element info: {Using=id, value=usuario-logado}
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:323)
    at org.openqa.selenium.remote.RemoteWebDriver.findElementById(RemoteWebDriver.java:372)
    at org.openqa.selenium.By$ById.findElement(By.java:188)
    at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:315)
    at br.com.alura.leilao.login.TestLogin.deveriaLogarTest(TestLogin.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Ele não acha a assertion porque o login não é efetuado: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Teste:

package br.com.alura.leilao.login;

import org.junit.Assert;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class TestLogin {
    @Test
    public void deveriaLogarTest() throws InterruptedException {
        System.setProperty("webdriver.chrome.driver",
                "C:\\\\Users\\pamela.santos\\Documents\\2019-selenium-java-projeto_inicial\\drivers\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("http://localhost:8080/login");
        driver.findElement(By.id("username")).sendKeys("fulano");
        driver.findElement(By.id("password")).sendKeys("pass");

        Thread.sleep(2000);
        driver.findElement(By.id("btnlogin")).click();
        //Assert.assertFalse(driver.getCurrentUrl().equals("http://localhost:8080/leiloes"));
        Assert.assertEquals("fulano", driver.findElement(By.id("usuario-logado")).getText());

        driver.quit();
    }
}

HTML:

<html>
    <head th:replace="~{base :: head}"></head>

    <body>
        <div th:replace="~{base :: logo}"></div>

        <div class="container">
            <div th:replace="~{base :: titulo('Login')}"></div>

            <div th:if="${param.error}" class="alert alert-danger" role="alert">   
                Usuario e senha invalidos.
            </div>

            <div class="card mb-3">
                <form id="login-form" th:action="@{/login}" class="card-body" method="post">
                    <div class="form-group">
                        <label for="username">Usuario</label>
                        <input id="username" name="username"  class="form-control" placeholder="usuario" autofocus="autofocus">
                    </div>

                    <div class="form-group">
                        <label for="password">Senha</label>
                        <input id="password" type="password" name="password" class="form-control" placeholder="senha">
                    </div>

                    <button id="btnlogin" class="btn btn-primary" type="submit">Login</button>
                </form>
            </div>
        </div>
    </body>
</html>

Digo o console quando você executa o projeto normalmente e não os testes.

Rode a classe main (LeilaoApllication) e manda aqui o log

Adicionei num bloco de notas online por causa do número de caracteres: https://pt.anotepad.com/note/read/7nj4d8px

solução!

Boa! Deu um erro mesmo ao executar o projeto e parece ser algo com a versão do seu Java.

O jeito mais fácil de resolver e você alterar o código da classe UsuarioRepository, que está no pacote src/main/java/br.com.alura.leilao.repositories:

package br.com.alura.leilao.repositories;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import br.com.alura.leilao.model.Usuario;

@Repository
public interface UsuarioRepository extends JpaRepository<Usuario, Long> {

    @Query("SELECT u FROM Usuario u WHERE u.nome = :username")
    public Usuario getUserByUsername(String username);

}

Altere o select que está na anotação @Query para:

@Query("SELECT u FROM Usuario u WHERE u.nome = ?1")

Rode novamente o projeto e veja se resolve.

Deu certo, muito obrigada viu :) :) :) Insira aqui a descrição dessa imagem para ajudar na acessibilidade