Selenium 2.53 não funciona no Firefox 47

107

Estou recebendo um erro ao usar o Firefox com WebDriver.

org.openqa.selenium.firefox.NotConnectedException: Unable to connect
to host 127.0.0.1 on port 7055 after 45000 ms.
  • Versão do Firefox: 47.0
  • Selênio: 2.53.0
  • Windows 10 64 bits

Alguém está tendo um problema semelhante ou alguma ideia de qual é a solução para isso? Está funcionando bem com o Chrome, mas com o Firefox nenhum dos URLs está sendo carregado.

Veena K
fonte
1
Sim eu também recebendo o mesmo erro. Estou desinstalando e reinstalando novamente. Se o seu navegador estiver aberto, reinicie-o e tente.
Kishan Patel
Olá Kishan, tentei como você mencionou, mas continuo o mesmo erro ... então eu fiz downgrade para 46.0.1
veena k
Sim. houve algum problema de bloqueio de show de Mozilla. eles atualizaram a versão. Você pode voltar a voltar para 47. :-)
Kishan Patel
1
Este problema se manifesta no OSX com um erro, '"Firefox.bin" não pode ser aberto porque a identidade do desenvolvedor não pode ser confirmada:'. O downgrade para 46 resolveu.
hoosteeno

Respostas:

93

Infelizmente Selenium WebDriver 2.53.0 não é compatível com Firefox 47.0. O componente WebDriver que lida com os navegadores Firefox ( FirefoxDriver) será descontinuado. A partir da versão 3.0, o Selenium WebDriver precisará do geckodriverbinário para gerenciar os navegadores Firefox. Mais informações aqui e aqui .

Portanto, para usar o Firefox 47.0 como navegador com Selenium WebDriver 2.53.0, você precisa baixar o driver do Firefox (que é um arquivo binário chamado a geckodriverpartir da versão 0.8.0, e anteriormente wires) e exportar seu caminho absoluto para a variável webdriver.gecko.drivercomo uma propriedade de sistema em seu código Java:

System.setProperty("webdriver.gecko.driver", "/path/to/geckodriver");

Felizmente, a biblioteca WebDriverManager pode fazer esse trabalho para você, ou seja, baixar o binário Marionette adequado para sua máquina (Linux, Mac ou Windows) e exportar o valor da propriedade de sistema adequada. Para usar esta biblioteca, você precisa incluir esta dependência em seu projeto:

<dependency>
    <groupId>io.github.bonigarcia</groupId>
    <artifactId>webdrivermanager</artifactId>
    <version>4.1.0</version>
</dependency>

... e então execute esta linha em seu programa antes de usar o WebDriver:

WebDriverManager.firefoxdriver().setup();

Um exemplo completo de execução de um caso de teste JUnit 4 usando WebDriver poderia ser o seguinte:

public class FirefoxTest {

    protected WebDriver driver;

    @BeforeClass
    public static void setupClass() {
        WebDriverManager.firefoxdriver().setup();
    }

    @Before
    public void setupTest() {
        driver = new FirefoxDriver();
    }

    @After
    public void teardown() {
        if (driver != null) {
            driver.quit();
        }
    }

    @Test
    public void test() {
        // Your test code here
    }
}

Leve em consideração que o Marionette será a única opção para o futuro (para WebDriver 3+ e Firefox 48+), mas atualmente (versão 0.9.0 no momento da escrita) não é muito estável. Dê uma olhada no roteiro da Marionete para mais detalhes.

ATUALIZAR

O Selenium WebDriver 2.53.1 foi lançado em 30 de junho de 2016. FirefoxDriverestá funcionando novamente com o Firefox 47.0.1 como navegador.

Boni García
fonte
9
Isso está incorreto. Na verdade, o MarionetteDriver NÃO é suportado no 47, apesar de o FirefoxDriver estar quebrado. Aparentemente 47.0.1 será lançado (em algum momento) no qual o FirefoxDriver estará funcionando novamente. Working MarionetteDriver não chegou a 47 como esperado. Consulte github.com/mozilla/geckodriver/issues/89 e bugzilla.mozilla.org/show_bug.cgi?id=1279950 - Observação: não estou dizendo que o MarionettDriver não funcionará, apenas que está quebrado por uma tonelada de casos de uso com 47. Downgrade é a única opção até hoje.
dmansfield
7
Eu atualizei para 47.0.1 e o Selenium ainda não está se conectando ao Firefox. Ele não trava mais o Firefox, mas ainda recebo uma falha ao conectar a 127.0.0.1:7055. Quando executo o TcpView, não há listener da porta 7055 após a inicialização do Firefox.
BardMorgan
2
Vejo o mesmo comportamento do BardMorgan, usando Mac, Mono e Selenium .NET 2.53.0. O Firefox 47.0.1 é iniciado, mas recebo o erro de tempo limite OpenQA.Selenium.WebDriverException: Falha ao inicializar o soquete em 45.000 milissegundos. Tentativa de conexão com os seguintes endereços: 127.0.0.1:7055 - netstat não mostra nenhum ouvinte para essa porta.
Otto G
1
E agora também testei no Windows 10 e no .NET nativo, e o problema é o mesmo. O Netstat mostra que o Selenium tenta se conectar, mas nenhum serviço está escutando:C:\Windows\system32>netstat -ano | find "7055" TCP 127.0.0.1:2896 127.0.0.1:7055 SYN_SENT 2052
Otto G
1
Para registro, ao visitar sobre: ​​complementos no Firefox 47.0.1 lançados por Selenium 2.53.0, a guia Extensões mostrará “Firefox WebDriver é incompatível com Firefox 47.0.1.” Isso se deve à versão máxima de 47.0 em github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/javascript/… - a versão principal foi corrigida, portanto, uma compilação do código Selenium mais recente do GitHub deve corrigir o problema.
Otto G
18

Tente usar o firefox 46.0.1. Combina melhor com Selenium 2,53

https://ftp.mozilla.org/pub/firefox/releases/46.0.1/win64/en-US/
Mahbub Rahman
fonte
Obrigado Rahman ..está funcionando agora ... mas e se o requisito for trabalhar com a versão mais recente.
veena k
Se a solução funcionar, você pode aceitar a resposta? :-)
Mahbub Rahman
8
isso não é uma solução, é um downgrade para uma versão anterior.
TiGreX
1
Eu também fiz isso (mas fui para a v45) - se você seguir este caminho, certifique-se de renomear <caminho> \ Mozilla Firefox \ updater.exe para updater.exe.disable para evitar que sua versão desatualizada seja atualizada de volta para a versão atual automaticamente. Pode haver outras maneiras de fazer isso também - mas desativar as atualizações nas configurações de opção não funcionou para mim.
Desenhou em
10

Eu tive o mesmo problema e descobri que você precisa trocar os drivers porque o suporte foi interrompido . Em vez de usar o Firefox Driver , você precisa usar o Marionette Driver para executar seus testes. No momento, estou trabalhando na configuração sozinho e posso postar algumas etapas sugeridas, se desejar, quando tiver um exemplo funcional.

Aqui estão as etapas que segui para fazer isso funcionar em meu ambiente Java no Mac (funcionou para mim em minhas instalações do Linux (Fedora, CentOS e Ubuntu) também):

  1. Baixe o executável noturno na página de lançamentos
  2. Descompacte o arquivo
  3. Crie um diretório para Marionette (ou seja, mkdir -p /opt/marionette)
  4. Mova o arquivo executável descompactado para o diretório que você criou
  5. Atualize o seu $PATHpara incluir o executável (também, edite o seu, .bash_profilese desejar)
  6. : bangbang: Certifique-se de chmod +x /opt/marionette/wires-x.x.xque é executável
  7. Em seu lançamento, certifique-se de usar o código a seguir (é o que usei no Mac)

Nota rápida

Ainda não está funcionando como o esperado, mas pelo menos lança o navegador agora. Preciso descobrir por quê - agora parece que preciso reescrever meus testes para fazê-los funcionar.

Snippet Java

WebDriver browser = new MarionetteDriver();
System.setProperty("webdriver.gecko.driver", "/opt/marionette/wires-0.7.1-OSX");
el n00b
fonte
6

Se você está no OSX usando o Homebrew, pode instalar versões antigas do Firefox via brew cask:

brew tap goldcaddy77/firefox
brew cask install firefox-46 # or whatever version you want

Após a instalação, você só precisará renomear seu executável FF no diretório Aplicativos para "Firefox".

Mais informações podem ser encontradas em git repo homebrew-firefox . Adereços para smclernon para criar o barril original .

Dan Caddigan
fonte
6

Se você estiver em um Mac, faça isso brew install geckodrivere pronto!

The Whizz of Oz
fonte
3

Caso alguém esteja se perguntando como usar o Marionette em C #.

FirefoxProfile profile = new FirefoxProfile(); // Your custom profile
var service = FirefoxDriverService.CreateDefaultService("DirectoryContainingTheDriver", "geckodriver.exe");
// Set the binary path if you want to launch the release version of Firefox.
service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
var option = new FirefoxProfileOptions(profile) { IsMarionette = true };
var driver = new FirefoxDriver(
    service,
    option,
    TimeSpan.FromSeconds(30));

Substituindo FirefoxOptions para fornecer a função de adicionar capacidade adicional e definir o perfil do Firefox porque o selenium v53 ainda não fornece essa função.

public class FirefoxProfileOptions : FirefoxOptions
{
    private DesiredCapabilities _capabilities;

    public FirefoxProfileOptions()
        : base()
    {
        _capabilities = DesiredCapabilities.Firefox();
        _capabilities.SetCapability("marionette", this.IsMarionette);
    }

    public FirefoxProfileOptions(FirefoxProfile profile)
        : this()
    {
        _capabilities.SetCapability(FirefoxDriver.ProfileCapabilityName, profile.ToBase64String());
    }

    public override void AddAdditionalCapability(string capabilityName, object capabilityValue)
    {
        _capabilities.SetCapability(capabilityName, capabilityValue);
    }

    public override ICapabilities ToCapabilities()
    {
        return _capabilities;
    }
}

Nota: a inicialização com perfil não funciona com FF 47, funciona com FF 50 Nightly.

No entanto, tentamos converter nosso teste para usar o Marionette, e isso não é viável no momento porque a implementação do driver não está concluída ou está cheia de erros. Eu sugiro que as pessoas façam o downgrade do Firefox neste momento.

Steven
fonte
2

Novas bibliotecas Selenium estão disponíveis, de acordo com: https://github.com/SeleniumHQ/selenium/issues/2110

A página de download http://www.seleniumhq.org/download/ parece não ter sido atualizada ainda, mas adicionando 1 à versão secundária no link, eu poderia baixar a versão C #: http: // selenium-release. storage.googleapis.com/2.53/selenium-dotnet-2.53.1.zip

Funciona comigo com Firefox 47.0.1.

Como observação lateral, consegui construir apenas a extensão webdriver.xpi do Firefox a partir do branch master no GitHub, executando ./go //javascript/firefox-driver:webdriver:run- o que gerou uma mensagem de erro, mas construiu o arquivo build / javascript / firefox-driver / webdriver.xpi , que poderia renomear (para evitar conflito de nomes) e carregar com êxito com o método FirefoxProfile.AddExtension. Essa foi uma solução alternativa razoável sem ter que reconstruir toda a biblioteca Selenium.

Otto G
fonte
Posso confirmar que atualizar o selênio para 2.53.1 resolveu o problema para mim.
Disper
Esta é agora a melhor resposta.
Holistic Developer
2

É um problema FF47 https://github.com/SeleniumHQ/selenium/issues/2110

Faça downgrade para FF 46 ou inferior (ou experimente o desenvolvedor FF48 https://developer.mozilla.org/en-US/Firefox/Releases/48 )

Instruções sobre como fazer o downgrade: https://www.liberiangeek.net/2012/04/how-to-install-previous-versions-of-firefox-in-ubuntu-12-04-precise-pangolin/ Ou se você for no Mac, como sugerido por outra pessoa neste tópico, use cerveja.

Supra
fonte
De acordo com um comentário de 19 horas atrás: “O Firefox 47.0.1 foi lançado com uma correção. Agora precisamos liberar bibliotecas de cliente para obter um aumento de versão no xpi usado pelo FirefoxDriver . ” Isso parece explicar por que ainda há problemas com 2.53.0 e 47.0.1.
Otto G
2

O Firefox 47.0 parou de funcionar com o Webdriver.

A solução mais fácil é mudar para Firefox 47.0.1 e Webdriver 2.53.1. Esta combinação funciona novamente. Na verdade, restaurar a compatibilidade do Webdriver foi a principal razão por trás do lançamento 47.0.1, de acordo com https://www.mozilla.org/en-US/firefox/47.0.1/releasenotes/ .

usuário7610
fonte
Agora o Firefox 47.0.1 também está funcionando bem com o Webdriver 2.53.0. Eu testei essa combinação.
veena k
2

Você pode tentar usar este código,

private WebDriver driver;
System.setProperty("webdriver.firefox.marionette","Your path to driver/geckodriver.exe");        
driver = new FirefoxDriver();

Eu atualizei para o Selenium 3.0.0 e a versão do Firefox é 49.0.1

Você pode baixar geckodriver.exe em https://github.com/mozilla/geckodriver/releases

Certifique-se de baixar apenas o arquivo zip, o arquivo geckodriver-v0.11.1-win64.zip ou win32 um de acordo com o seu sistema e extraí-lo em uma pasta.

Coloque o caminho para essa pasta nas aspas "Seu caminho para o driver". Não se esqueça de colocar geckodriver.exe no caminho.

suketup
fonte
1

Finalmente instalei uma versão antiga adicional do Firefox (usada apenas para teste) para resolver isso, além da minha última instalação regular (segura e atualizada) do Firefox.

Isso requer que o webdriver saiba onde pode encontrar o binário do Firefox, que pode ser definido por meio da webdriver.firefox.binpropriedade.

O que funcionou para mim (mac, maven, /tmp/ff46como pasta de instalação) é:

mvn -Dwebdriver.firefox.bin=/tmp/ff46/Firefox.app/Contents/MacOS/firefox-bin verify

Para instalar uma versão antiga do Firefox em uma pasta dedicada, crie a pasta, abra o Finder nessa pasta, baixe o dmg do Firefox e arraste-o para esse Finder.

avandeursen
fonte
1

Em setembro de 2016

Firefox 48.0e selenium==2.53.6funcionam bem sem erros

Para atualizar o firefox em Ubuntu 14.04 apenas

sudo apt-get update
sudo apt-get upgrade firefox
Levon
fonte
1

Parece-me que a melhor solução é atualizar para o Selenium 3.0.0, baixar geckodriver.exe e usar o Firefox 47 ou superior.

Mudei a inicialização do Firefox para:

 string geckoPathTest = Path.Combine(Environment.CurrentDirectory, "TestFiles\\geckodriver.exe");
 string geckoPath = Path.Combine(Environment.CurrentDirectory, "geckodriver.exe");
 File.Copy(geckoPathTest, geckoPath);
 Environment.SetEnvironmentVariable("webdriver.gecko.driver", geckoPath);
 _firefoxDriver = new FirefoxDriver();
Tomas Kubes
fonte
0

Posso confirmar que selenium 2.53.6funciona firefox 44comigo no Ubuntu 15.

Bernard 'Beta Berlin' Parah
fonte