wake-up-neo.net

So beheben Sie Selenium WebDriverException: Der Browser scheint beendet zu sein, bevor wir eine Verbindung herstellen konnten?

Ich habe Firefox und Xvfb auf meinem centos6.4-Server installiert, um den Selenium-Web-Treiber zu verwenden.

Beim Ausführen des Codes wurde jedoch eine Fehlermeldung angezeigt.

from Selenium import webdriver
browser = webdriver.Firefox()

Error

Selenium.common.exceptions.WebDriverException: Message: 
'The browser appears to have exited before we could connect. The output was: None'

Ich habe einige verwandte Seiten über stackoverflow gelesen und jemand schlug vor, alle Dateien im tmp-Ordner zu entfernen, also habe ich es getan. Aber es funktioniert immer noch nicht.

Könnte mir bitte jemand helfen?

Danke im Voraus!

Bearbeiten

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.4/site-packages/Selenium/webdriver/firefox/webdriver.py", line 59, in __init__
    self.binary, timeout),
  File "/usr/local/lib/python3.4/site-packages/Selenium/webdriver/firefox/extension_connection.py", line 47, in __init__
    self.binary.launch_browser(self.profile)
  File "/usr/local/lib/python3.4/site-packages/Selenium/webdriver/firefox/firefox_binary.py", line 64, in launch_browser
    self._wait_until_connectable()
  File "/usr/local/lib/python3.4/site-packages/Selenium/webdriver/firefox/firefox_binary.py", line 103, in _wait_until_connectable
    self._get_firefox_output())
Selenium.common.exceptions.WebDriverException: Message: 'The browser appears to have exited     before we could connect. The output was: None' 
54
W3Q

für Googlers funktionierte diese Antwort nicht für mich und ich musste stattdessen diese Antwort verwenden. Ich verwende AWS Ubuntu. 

Grundsätzlich musste ich Xvfb installieren und dann pyvirtualdisplay:

Sudo apt-get install xvfb
Sudo pip install pyvirtualdisplay

Nachdem ich das getan hatte, funktionierte dieser Python-Code:

#!/usr/bin/env python

from pyvirtualdisplay import Display
from Selenium import webdriver

display = Display(visible=0, size=(1024, 768))
display.start()

browser = webdriver.Firefox()
browser.get('http://www.ubuntu.com/')
print browser.page_source

browser.close()
display.stop()

Danke an @ That1Guy für die erste Antwort

68
Davidjb

Ich lief auf einem Ubuntu 14.04 Server (mit Headless) und Jenkins und xvfb installiert. Ich hatte den neuesten stabilen Firefox (47) installiert, der einen Build-Fehler startete, in dem ein Python-Skript ausgeführt wurde, das den Firefox-Treiber für Selenium (Version 2.53) verwendete.

Anscheinend ist Firefox 47+ nicht mit dem Treiber kompatibel, der in Selenium 2.53 verwendet wird, und Selenium 3+ wird einen neuen Treiber namens "Marionette" oder "Gecko Driver" verwenden (der noch nicht offiziell veröffentlicht wurde).

Auf dieser Seite wird die Verwendung des neuen Treibers in mehreren Sprachen beschrieben: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

Grundsätzlich gilt:

  1. holen Sie sich die ausführbare Datei aus dem Projekt auf github: https://github.com/mozilla/geckodriver/releases (und stellen Sie sicher, dass die Perms als ausführbare Datei definiert sind, IE chmod a+x /path/to/geckdriver-executable).
  2. umbenennen/Kopieren von Binärdateien in "Drähte"
  3. stellen Sie sicher, dass der Speicherort der Binärdatei dem PFAD hinzugefügt wird, den der Build beim Ausführen des Selenium-Tests verwendet
  4. aktualisieren Sie den Selenium-Test, um den neuen Treiber zu verwenden

Für Python sah Schritt 4 für mich wie folgt aus:

from Selenium import webdriver
from Selenium.webdriver.common.desired_capabilities import DesiredCapabilities

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
firefox_capabilities['binary'] = '/usr/bin/firefox'

driver = webdriver.Firefox(capabilities=firefox_capabilities)
25
Joel Kleier

Ich hatte auch das gleiche Problem. Ich war bei Firefox 47 und Selen 2.53; Ich habe Firefox auf 45 herabgestuft. Das hat funktioniert.

  1. Entfernen Sie zuerst Firefox 47:

    Sudo apt-get purge firefox
    
  2. Überprüfen Sie die verfügbaren Versionen:

    apt-cache show firefox | grep Version
    

    Es werden verfügbare Firefox-Versionen angezeigt:

    Version: 47.0 + build3-0ubuntu0.16.04.1
    Version: 45.0.2 + build1-0ubuntu1

  3. Installieren Sie eine bestimmte Version

    Sudo apt-get install firefox=45.0.2+build1-0ubuntu1
    
  4. Als nächstes müssen Sie nicht erneut auf die neuere Version aktualisieren.

    Sudo apt-mark hold firefox
    
  5. Wenn Sie später ein Upgrade durchführen möchten

    Sudo apt-mark unhold firefox
    Sudo apt-get upgrade
    
22
Amogh Joshi

Überprüfen Sie Ihre Umgebungsvariable DISPLAY. Führen Sie echo $DISPLAY in der Befehlszeile aus.

Wenn nichts gedruckt wird, führen Sie FireFox ohne zugewiesene ANZEIGE aus. Du solltest eins vergeben! Führen Sie export DISPLAY=:1 in der Befehlszeile aus, bevor Sie Ihr Python-Skript ausführen.

In diesem Thread finden Sie weitere Informationen: http://hashcat.net/forum/thread-1973.html

11
Bilal Naqvi

Ich denke, die einfachste Lösung hier ist, einfach Python mit xvfb-run auszuführen:

Sudo apt-get install xvfb
xvfb-run python <your_file_or_args>
5
Philip Tzou

Anstatt Firefox von der 47-Version auf 45 oder ein anderes herunterzustufen, empfehle ich ein Upgrade auf 47.0.1 oder höher, da dies ein Problem zu beheben scheint.

Wenn Ihr Betriebssystem jedoch keine neuen Pakete in Repo enthält (zum Beispiel Ubuntu 14.04 zum Zeitpunkt dieser Antwort), können Sie Debs aus dem Ubuntuzilla-Projekt verwenden:

wget sourceforge.net/projects/ubuntuzilla/files/mozilla/apt/pool/main/f/firefox-mozilla-build/firefox-mozilla-build_47.0.1-0ubuntu1_AMD64.deb

Sudo dpkg -i firefox-mozilla-build_47.0.1-0ubuntu1_AMD64.deb

Für x86 verwenden Sie _i386.deb postfix . Das verkaufte Problem für mich

1
valignatev

Setzen Sie Ihren Firefox auf die vorherige Arbeitsversion zurück. Ich schlage 2 Versionen vor. Deaktivieren Sie den Firefox-Wartungsdienst. 

Ich habe an einer Lösung gearbeitet und der Firefox Maintenance Service hat Firefox auf den neuesten Stand im Hintergrund aktualisiert. Dies hat meinen Code gebrochen und es gab mir diesen Fehler. 

Jetzt ist es behoben!

Danke euch allen!

1
Jacob George

Dieser Fehler ist darauf zurückzuführen, dass Xvfb nicht ausgeführt wird. So starten Sie Ihre xvfb neu:

Xvfb :99 -ac

dann überprüfen Sie ... Das funktioniert bei mir.

1
Ashok Devatwal

Ich habe dies behoben, indem ich einen rekursiven Chown für nicht nur das Python-Skript mit Selenium durchführte, sondern auch für die gesamte virtuelle Umgebung, in der das Skript ausgeführt wurde. Danach ging dieser Fehler weg.

0
melchoir55

Ich stand auch vor dem gleichen Problem, was ich tat:

  1. Aktualisieren Sie das Selenium-Paket

    Sudo pip install -U Selenium
    
  2. Anstatt auf eine ältere Version (wie vorgeschlagen) zurückzurollen, habe ich mich auf eine neuere Version (48.0, früher war ich mit V47.0 eingestellt) ... (für ein Upgrade folge den Anweisungen von Toby Speight, aber statt einer älteren Version die neuere Version gewählt) Ausführung)

0