4
respostas

Selenium Server Standalone

Baixei .jar versão 3.1.0 do selenium server standalone, porém deu o seguinte erro ao executar o exemplo do curso de selenium:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TesteAutomatizado {

    public static void main(String[] args) {
        // abre firefox
        WebDriver driver = new FirefoxDriver();

        // acessa o site do google
        driver.get("http://www.google.com.br/");

        // digita no campo com nome "q" do google
        WebElement campoDeTexto = driver.findElement(By.name("q"));
        campoDeTexto.sendKeys("Caelum");

        // submete o form
        campoDeTexto.submit();

    }
}
Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases
    at com.google.common.base.Preconditions.checkState(Preconditions.java:738)
    at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:111)
    at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:38)
    at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:112)
    at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:302)
    at org.openqa.selenium.firefox.FirefoxDriver.createCommandExecutor(FirefoxDriver.java:312)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:272)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:267)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:263)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:122)
    at TesteAutomatizado.main(TesteAutomatizado.java:10)

O que devo fazer?

4 respostas

Eu acessaria o link mencionado na exception e seguiria as instruções.

Olá Ana,

esta versão do Selenium que você pegou já não suporta mais o driver para trabalhar com o Firefox apenas chamando new FirefoxDriver. Você precisa baixar um driver chamado de gecko para que ele consiga trabalhar com o navegador.

Então o que você precisa fazer é baixar o gecko neste link. Neste site tem vários arquivos comprimidos .tar.gz para os diferentes tipos de sistemas operacionais. Pegue o que seja compatível com o seu S.O. e descompacte o .tar.gz em qualquer pasta na sua máquina. Depois de descompactar, nesta pasta terá um arquivo chamado de geckodriver.

Ai o que vai ficar faltando fazer é no seu código passar este geckodriver antes de instanciar o FirefoxDriver. Para isso, antes então do new FirefoxDriver você chamará a seguinte linha:

System.setProperty("webdriver.gecko.driver", "<Caminho completo das pastas até o arquivo geckodriver>");

Passei por isso tb, apanhei um pouco para configurar o Path para o Driver do Gecko, para só depois ver que havia essa dúvida aqui.

Não sei se a plataforma da Alura permite, mas seria bom deixar uma referência, avisando para olhar aqui nas Dúvidas, ou mesmo atualizar a transcrição da aula inserindo essa informação de como configura-lo.

Creio que vocês estão se referindo ao Selenium Server, cuja versão mais nova é 3.4.0.

A versão mais nova do Selenium Server Standalone é 2.53.0.

Não precisei usar o geckodriver na versão Standalone, mas precisei baixar e referenciar o Firefox 46.0 através da propriedade:

System.setProperty("webdriver.firefox.bin",  "<localizacao do ff 46.0>");

Bem confusa essa "salada" de versões, que parecem ter algumas diferenças de comportamento e de dependências...