In 60 Sekunden kann keine stabile Firefox-Verbindung hergestellt werden (127.0.0.1:7055)

74

Beim Testen des Szenarios von cucumberwird beim Ausführen von rspecTests der folgende Fehler angezeigt

In 60 Sekunden kann keine stabile Firefox-Verbindung hergestellt werden (127.0.0.1:7055) (Selenium :: WebDriver :: Error :: WebDriverError)

Verwenden von ruby (1.9.2) selenium-webdriver (2.27.2)undfirefox (19.0)

Unter Verwendung rspec-rails (2.12.1), capybara (2.0.2)und einige andere Edelsteine, habe ich auch hinzugefügt launchyJuwel , aber sie scheinen nicht ein Problem zu sein. Und ich benutze Windows 7.

Panjiyar Rahul
quelle
Zeigen Sie einen Reproduktionsfall (wenn er groß ist, senden Sie ihn an gist.github.com).
Andrei Botalov
1
Wir hatten gerade diesen Start über das Wochenende mit zuvor stabilen Tests und haben ein Bundle-Update durchgeführt, um das Problem zu beheben.
Pschuegr
Kann das Ändern des Browser-Standards auf die von Chrome unterstützte Version für Selenium-Webdriver dieses Problem beheben oder nicht?
Panjiyar Rahul
Ich habe hier einen Reproduktionsfall gepostet. gist.github.com/4536512
Panjiyar Rahul
FWIW: Ihr Kern ist eine Stapelspur, kein Reproduktionsfall.
pje

Antworten:

87

Ich hatte das gleiche Problem (unter Linux). Behoben mit:

gem update selenium-webdriver

Jetzt verwende ich Ruby 1.9.3-p286, Selen-Webdriver 2.29.0, Firefox 18.0 sowie Rspec-Rails 2.9.0, Capybara 1.1.2 und Capybara-Webkit 0.12.1

Ich habe Selenium-Webdriver 2.29.0 aus Sicherheitsgründen zu meiner Gemfile hinzugefügt.

ballPointPenguin
quelle
Vielen Dank!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! Das Aktualisieren des Selen-Web-Treibers funktionierte für mich unter Mac OS X 10.6.8 / Ruby 1.9.3-p194
7stud
Funktioniert total! Vielen Dank. Ich verwende Selenium-Webdriver 2.34.0 und Firefox 19 (ich habe 23 auf 19 herabgestuft, FF 23 nicht ausprobiert) ohne Fehler.
ersentekin
Ja, Firefox 22 in OS X befindet sich nur dort, bevor der Test mit diesem Fehler abläuft.
Sarah Vessels
Hier ist die US-englische Version von Firefox 19 für OS X: ftp.mozilla.org/pub/mozilla.org/firefox/releases/19.0/mac/en-US
Sarah Vessels
4
Dies sollte nicht die genehmigte Antwort sein. stackoverflow.com/a/18263152/712188 ist die richtigere Antwort.
Dean Galvin
46

Es scheint, dass Selenium Webdriver regelmäßig aktualisiert wird, um mit Firefox Schritt zu halten. Aber woher weißt du, welche Version du brauchst? Hoffentlich funktioniert dieses Verfahren auch, wenn sich die Versionen ändern:

  1. Gehen Sie zu http://www.seleniumhq.org/download/ .

  2. Scrollen Sie nach unten zu Selenium Client & WebDriver Language Bindings .

  3. Klicken Sie in diesem Abschnitt in der Ruby- Sprachzeile auf "Änderungsprotokoll" ( direkter Link ).

  4. Bestimmen Sie im Änderungsprotokoll, welche Version von Selen Sie für Ihre Version von Firefox benötigen.

Wenn Sie Bundler verwenden, führen Sie aus, um festzustellen, bundle show selenium-webdriverwelche Version Sie haben. Um beispielsweise auf 2.35.0 zu aktualisieren, fügen Sie diese Zeile zu Gemfile:

gem 'selenium-webdriver', '2.35.0'

und dann ausführen bundle update, um zu installieren. Wenn Sie Spork verwenden, denken Sie daran, es neu zu starten, bevor Sie Ihre Tests erneut ausführen.

Update One StackOverflow-Antwort zeigt an, dass das Änderungsprotokoll im Quellcode-Repository möglicherweise früher aktualisiert wird als auf seleniumhq.org. Das Repository-Änderungsprotokoll für Ruby finden Sie hier: https://github.com/SeleniumHQ/selenium/blob/master/rb/CHANGES .

Firefox herabstufen

Wenn Sie Firefox unter Ubuntu 12.04 herunterstufen müssen, wird in dieser Antwort erläutert, wie Sie zu Firefox 20 zurückkehren. Eine allgemeinere Beschreibung der Möglichkeit, zu einer beliebigen Version von Firefox zu wechseln, finden Sie hier . Verwenden Sie diese Antwort , um Firefox-Updates anzuhalten, bis Selenium ein Update veröffentlicht, das mit der späteren Version von Firefox funktioniert.

In meinem Fall habe ich Firefox nur herabgestuft, um festzustellen, dass Selenium Webdriver kürzlich aktualisiert wurde, um die neueste Version zu verarbeiten. Suchen Sie also zuerst nach Selenium-Updates!

Mark Berry
quelle
10
bundle update selenium-webdriver
Rusllonrails
quelle
9

Ich bin gerade auf dem CI-Server darauf gestoßen und habe festgestellt, dass Firefox kein Display zur Verwendung hatte. Ich hatte gedacht, dass der Selen-Webdriver ohne weitere Eingriffe funktionieren würde, aber das war nicht der Fall.

Durch Hinzufügen von Xvfb zum Mix hat es funktioniert.

Für Schienen mit Gurkenfunktionen:

gem 'headless'

dann in features / support / env.rb.

Before do
  if Capybara.current_driver == :selenium
    require 'headless'

    headless = Headless.new
    headless.start
  end
end
Matt Gibson
quelle
Was entspricht Javascript Ihren Funktionen / support / env.rb?
Scott Stensland
Ich weiß es nicht genau, aber es ist eine Datei, die enthalten ist und ausgeführt wird, bevor alle Tests beginnen.
Matt Gibson
3

Dieser Fehler tritt auf, wenn Selen- und Firefox-Versionen nicht kompatibel sind.

Es gibt zwei Möglichkeiten.

  1. Selen aktualisieren:

    gem update selenium-webdriver

    Wenn dies immer noch fehlschlägt, wurde Selen nicht auf die neueste Version aktualisiert.

  2. Downgrade der Version von Firefox:

    sudo apt-get purge firefox

    Um die verfügbaren Pakete zum Download anzuzeigen apt-cache showpkg firefox

    sudo apt-get install firefox=#older_version#

pgerstoft
quelle
1

Die magische Kombination, die für mich funktioniert hat, war Firefox 19.0 und Selen-Web-Treiber 2.32.1 (spätestens zum Zeitpunkt des Schreibens). Firefox 20.x und 21.x haben nicht funktioniert. Ich musste Firefox herabstufen. Beachten Sie auch, dass (zumindest unter Mac OS) beim Aufrufen von FireFox Menu -> About Firefox automatisch ein Upgrade auf die neueste Version durchgeführt wird. Tu das nicht.

Schiffsbahn
quelle
1

Wenn das oben genannte jetzt funktioniert, wie in meinem Fall, probieren Sie es aus.

Ich habe den Timeout-Fehler auf einer Maschine und nicht auf einer anderen erhalten. Beide Maschinen sind Thin Clients, auf denen genau die gleichen Versionen von allem ausgeführt werden. Das schloss also inkompatible Firefox-Versionen aus (Fehler trat auf einem Computer auf und nicht auf dem anderen)

Es stellte sich heraus, dass es ein Problem mit dem von Headless verwendeten Port gab. Es gab einen anderen Prozess, der diesen Port verwendete.

Das Folgende hat das Problem für mich behoben:
Fügen Sie die folgende Zeile in die .zshenv- Datei ein
export XVFB_DISPLAY='new-port-number'
und führen Sie den Befehl zshim Terminal aus, um die Änderung festzulegen

Orion
quelle
0

Ich hatte dieses Problem, als ich irb von einem Terminal aus startete, an dem ich mich bei einem anderen Benutzer verklagt hatte. Ich würde diesen Fehler erhalten, wenn ich irb als dieser Benutzer ausführen würde. Aber nicht, wenn ich als root lief. Und nicht, wenn ich zu einer Shell zurückgekehrt bin, die dem angemeldeten Benutzer gehört.

ttguy
quelle
0

Für mich hatte ich die Edelsteine ​​bereits aktualisiert, musste dann aber mein Bundle aktualisieren.

Navigieren Sie in Powershell zu Ihrem Verzeichnis und aktualisieren Sie das Bundle:

cd D:\Projects\LazyAutomation
bundle update
Alexander Williamson
quelle
0

Wenn Sie sich für Vagrant anmelden und XServer aktivieren, kann Firefox korrekt gestartet werden, was das Problem für mich gelöst hat. Vagabund ssh - -X

Ben
quelle
0

Downgrade von Firefox.

Wenn es gem 'headless'derzeit nicht wünschenswert ist, Edelsteine bereits zu verwenden und zu aktualisieren, müssen Sie Firefox herunterstufen.

Für Ubuntu (aber andere Linux-Distributionen wären ziemlich ähnlich) sollten Sie:

Entfernen Sie Firefox, das mit den neuesten Ubuntu-Versionen geliefert wird

sudo apt-get purge firefox

Sie können das Entfernen einiger zugehöriger Daten ergänzen, wie hier erläutert

Installieren Sie jetzt eine ältere Version von Firefox. Für mich hat Version 42.0 funktioniert (wie unsere Travis.ci es verwendet)

$ export FIREFOX_SOURCE_URL='https://download.mozilla.org/?product=firefox-42.0&lang=en-US&os=linux64'
$ wget --no-verbose -O /tmp/firefox-42.0.tar.bz2 $FIREFOX_SOURCE_URL
$ tar xvC ~/. -f /tmp/firefox-42.0.tar.bz2
ln -s ~/firefox/firefox ~/bin/firefox

Öffnen Sie eine neue Terminalregisterkarte und führen Sie Ihre Gurkenspezifikationen / Selenspezifikationen aus.

Sie können jetzt die neueste Version von Firefox herunterladen und eine .desktopDatei erstellen /usr/share/applications/, um vom Dock aus darauf zuzugreifen. Und lassen Sie Selen standardmäßig die ältere Version finden. Nehmen Sie dies als Referenz

juliangonzalez
quelle
-3

Nachdem ich dem Vorschlag von ballPointPenguin gefolgt bin, kann ich jetzt mit watir-webdriver lokale Dateien oder Dateien im htdocs-Verzeichnis meiner lokalen Apache-Installation oder Dateien im Web abrufen:

1) file:///Users/me/jquery_programs/1.htm
2) 'http://localhost:8080/my.html'
3) 'http://www.google.com'

require 'watir-webdriver'

browser = Watir::Browser.new :firefox
browser.goto 'http://localhost:8080/my.html'

Vor dem Update wurde folgende Fehlermeldung angezeigt:

`connect_until_stable ': In 60 Sekunden kann keine stabile Firefox-Verbindung hergestellt werden (127.0.0.1:7055) (Selenium :: WebDriver :: Error :: WebDriverError)

7stud
quelle
Dies ist keine Antwort auf diese Frage.
Cheng