2
respostas

chromedriver >> The driver executable does not exist: C:

Quando tento rodar o LoginTest.java o JUnity retorna o seguinte erro:

java.lang.IllegalStateException: The driver executable does not exist: C:\drivers\chromedriver.exe

Parece que ele está tentando rodar o chromedriver do C: e não o do projeto que definimos pelo System.setProperty("webdriver.chrome.driver", "drivers/chromedriver");

Detalhe: tentei editar o código para System.setProperty("webdriver.chrome.driver", "drivers/chromedriver.exe"); por estar no windows, mas ele continua tentando acessar o driver do C:. Eu coloquei o driver dentro do caminho especificado (C:\drivers\chromedriver.exe), mas então o browser.quit() não funciona, imaginei que isso seria porque ele está pegando o driver do pc e não do projeto.

2 respostas

Oi Izabela,

Posta aqui como ficou o seu codigo de testes e um print da estrutura do projeto com a pasta contendo o driver.

Obs.: Estou usando a porta 8081

package br.com.alura.leilao.login;

import org.junit.Assert;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class LoginTest {

    private static final String URL_LOGIN = "http://localhost:8081/login";
    private WebDriver browser;

    @BeforeAll
    public static void beforeAll() { // Antes de tudo, seta a variavel do browser
        System.setProperty("webdriver.chrome.driver", "drivers/chromedriver.exe"); // Caminho do Driver
    }

    @BeforeEach
    public void beforeEach() {
        this.browser = new ChromeDriver();    // Abre o browser antes de cada teste
        browser.navigate().to(URL_LOGIN);
    }

    @AfterEach
    public void afterEach() {
        this.browser.quit();    // Fecha o browser depois de cada teste
    }

    @Test
    // VERIFICA SE EFETUOU LOGIN CORRETAMENTE
    public void deveriaEfetuarLoginComDadosValidos() {

        browser.findElement(By.id("username")).sendKeys("fulano");
        browser.findElement(By.id("password")).sendKeys("pass");
        browser.findElement(By.id("login-form")).submit();

        String nomeUsuarioLogado = browser.findElement(By.id("usuario-logado")).getText();
        Assert.assertEquals("fulano", nomeUsuarioLogado);
        Assert.assertFalse(browser.getCurrentUrl().equals(URL_LOGIN));
    }

    @Test
    // VERIFICA LOGIN INVÁLIDO
    public void naoDeveriaLogarComDadosInvalidos() {

        browser.findElement(By.id("username")).sendKeys("invalido");
        browser.findElement(By.id("password")).sendKeys("123123");
        browser.findElement(By.id("login-form")).submit();

        Assert.assertTrue(browser.getCurrentUrl().equals("http://localhost:8081/login?error"));
        Assert.assertTrue("fulano", browser.getPageSource().contains("Usuário e senha inválidos."));
        Assert.assertThrows(NoSuchElementException.class, () -> browser.findElement(By.id("usuario-logado")));
    }
}

Estrutura do projeto (https://cdn1.gnarususercontent.com.br/1/1163022/45222050-c3bc-4cef-9ff0-e453ff4b9af0.png)

Print do Erro no JUnit (https://cdn1.gnarususercontent.com.br/1/1163022/672b25d8-cba3-43ec-9c5c-aa6857b31e39.png)