Resolvendo o problema de execução com Selenium no Firefox 47+

Se você usa o Selenium WebDriver e o Firefox para executar os seus testes automatizados deve ter notado que o Firefox 47+ simplesmente não funciona 🙁

Porque o Firefox 47+ não funciona com o Selenium?

Agora o Firefox usa um driver de automação da engine Gekco, o Marionette. Logo as execuções de teste com o Firefox e Selenium devem suportar este novo driver.

Como resolver?

Você precisa seguir três passos básicos:

  1. Baixar o Marionette Driver (gecko driver)
  2. Se você usa Linux ou Mac, deve dar permissão de execução no driver
    • chmod +x <nome_driver>
  3. Atualizar seus scripts de teste (exemplos abaixo)

Fique ligado!

O Marionette driver ainda está em desenvolvimento. Para ver exemplos, dúvidas, saber de atualizações ou submeter um bug acesse:

https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

15 comentários em “Resolvendo o problema de execução com Selenium no Firefox 47+

  1. MUUUUUUUUUUUUUITO OBRIGADO ELIAS NOGUEIRA!
    Eu estava com problemas a dias, tentei de tudo e não resolvia.

    Agora sim, está tudo funcionando perfeitamente.

        1. @BeforeClass(alwaysRun = true)
          public void setUp() throws Exception {
          System.setProperty(“webdriver.gecko.driver”, “C:/Drivers/marionette/geckodriver.exe”);

          DesiredCapabilities dc = DesiredCapabilities.firefox();
          dc.setCapability(“marionette”, true);

          driver = new FirefoxDriver(dc);
          baseUrl = “http://localhost:8084/”;
          driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
          }

          Esse é o setup… faço o teste pra somar dois numeros…
          abre o firefox e aparece uma pagina em branco e uma mensagem:

          O suporte de acessibilidade foi parcialmente desativado devido a problemas de compatibilidade com novos recursos de FIREFOX.

          1. Oi Tathyana,
            Nas novas versões do browser tu podes simplificar o código agora…

            Tu podes remover a linha do DesiredCapabilities e o setCapability, bem como o parâmetro dc no FireFoxDriver…

            System.setProperty(“webdriver.gecko.driver”, “C:/Drivers/marionette/geckodriver.exe”);

            driver = new FirefoxDriver();
            baseUrl = “http://localhost:8084/”;
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

            Me dá um retorno se deu certo ou não?

            Abraço!

  2. Bom dia, Elias!
    Me ajudou muito com esse tutorial!
    Obrigado!

    Dúvida: só consigo executar o driver “geckodriver” se colocar “.exe” ao final do caminho, mesmo fazendo exatamente o que você fez acima. Se isso não for feito, é apresentado “java.lang.IllegalStateException: The driver executable does not exist”. Como executar o referido driver sem inserir o “.exe”, justamente como foi feito por você ?

    Informei exatamente como foi feito por

    1. Olá Gleison,
      No meu exemplo, usando um MacOSX, o geckodriver não tem extensão, logo ele ele é colocado assim mesmo. E o mesmo funciona no Linux.
      No Windows tu precisa realmente colocar o .exe

      Abraço!

  3. Olá.
    Estou começando a estudar o uso do WebDriver. Por favor, poderia dar o passo a passo da instalação e configuração?
    Estou recebendo este erro na execução de scripts e não sei se é relativo a algum erro na configuração.
    The souce attachament doe not contain the source for the file DriverService.class.

    1. Oi Elis, tudo bem?
      Na verdade o Selenium WebDriver não possui instalação e configuração em si. Problemas provenientes dele ou são falta de alguma biblioteca ou na programação do script mesmo. Tu anexou uma classe em .class, onde eu não consigo ler (nem o blog deixa).
      Tu consegue me descrever o que acontece e qual é o erro apresentado pra ti?

      Grande abraço!

  4. Elias, aconteceu algo comigo, esqueci de renomear o nome do arquivo ehhe..

    Então para não acontecer isso com mais alguém segue trecho do Marionette Help:

    Even though the project has been renamed to GeckoDriver, many of the selenium clients look for the old name. You need to rename the binary file to ‘wires’ (the old name) and ensure it is executable.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *