it-swarm.com.de

Browser kann nach dem Firefox-Update nicht mit Selenium geöffnet werden

Ich verwende Selenium WebDriver auf Ubuntu Desktop 16.04 und kann den Browser nicht öffnen. Nach dem Firefox-Update erhalte ich folgende Fehlermeldung (vorher hat alles funktioniert):

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    driver = webdriver.Firefox()
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/webdriver.py", line 81, in __init__
    self.binary, timeout)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/extension_connection.py", line 51, in __init__
    self.binary.launch_browser(self.profile, timeout=timeout)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser
    self._wait_until_connectable(timeout=timeout)
  File "/usr/local/lib/python3.5/dist-packages/Selenium/webdriver/firefox/firefox_binary.py", line 98, in _wait_until_connectable
    raise WebDriverException("The browser appears to have exited "
Selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.
38
Alexa Iulian

FIXED: Zur Zeit ist das Downgrade von Firefox! Führen Sie diesen Befehl aus, um eine Liste der verfügbaren Firefox-Versionen zu erhalten.

apt-cache show firefox | grep Version

Mein Ergebnis:

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

Installieren:

Sudo apt-get install firefox=45.0.2+build1-0ubuntu1

Um diese Version beizubehalten und Updates zu verbieten:

Sudo apt-mark hold firefox

Wenn Sie die Firefox-Version freigeben und Aktualisierungen zulassen möchten:

Sudo apt-mark unhold firefox
Sudo apt-get upgrade
11
Alexa Iulian

Ab der Firefox-Version 47.0 (die etwas später herauskam), muss ein neuer Treiber verwendet werden (erstellt von Mozilla anstelle von Selenium), um eine Verbindung zu Firefox herzustellen, da in dieser Version ein Fehler auftritt. Ab Firefox Version 48.0 ist der alte Treiber komplett veraltet und es kann nur Marionette verwendet werden. Siehe: Marionettentreiber für Firefox

Laden Sie den driver herunter (verwenden Sie in OSX einfach brew install geckodriver), benennen Sie die ausführbare Datei in wires.exe unter Windows oder wires auf * nix-Systemen um, und stellen Sie sicher, dass die ausführbare Datei in Ihrem Systempfad vorhanden ist des alten Treibers, indem Sie Folgendes verwenden:

Bei Verwendung eines lokalen Treibers:

Python:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True

driver = webdriver.Firefox(capabilities=firefox_capabilities)

Rubin:

driver = Selenium::WebDriver.for :firefox, marionette: true

Javascript:

var capabilities = Capabilities.firefox();
capabilities.set('marionette', true);

var driver = new webdriver.Builder().withCapabilities(capabilities).build();

Java:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
Webdriver driver = new FirefoxDriver(capabilities);

C #:

var driver = new FirefoxDriver(new FirefoxOptions());

Bei Verwendung eines Selengitters:

Bei Verwendung eines Selenium-Gitters sollte sich der Treiber für alle Maschinen in Ihrem Grid im Pfad befinden.

Python:

firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities)

Rubin:

caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true
driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps

Java:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver
capabilities.setCapability("marionette", true);

WebDriver driver = new RemoteWebDriver(capabilities); 

C #:

DesiredCapabilities capabilities = DesiredCapabilities.Firefox();
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver
capabilities.SetCapability("marionette", true);

var driver = new RemoteWebDriver(capabilities); 
60
Mobrockers

Solution: Aktualisieren Sie Firefox auf 47.0.1 und Selenium auf 2.53.1.

Diese Kombination hat für mich funktioniert.

Weitere Informationen finden Sie unter https://stackoverflow.com/a/37728659/6469532

10
Mohit Tater

Einige Leute haben das Problem, dass einige buttons- oder select-Felder nicht im marionette-Modus ausgewählt werden können.

Eine Alternative ist die Verwendung einer älteren Firefox-Version:

Sie können die Binärdatei hier herunterladen und hier verwenden:

from Selenium import webdriver
from Selenium.webdriver.firefox.firefox_binary import FirefoxBinary

binary = FirefoxBinary('path/to/binary')
driver = webdriver.Firefox(firefox_binary=binary)
4
trantu

L&OUML;SUNGdowngrade auf 45 version:

firefox --version
    Mozilla Firefox 47.0
apt-get remove firefox
wget https://ftp.mozilla.org/pub/firefox/releases/45.0/linux-x86_64/en-US/firefox-45.0.tar.bz2
tar -xjf firefox-45.0.tar.bz2
mv firefox /opt/firefox45
ln -s /opt/firefox45/firefox /usr/bin/firefox
firefox --version
    Mozilla Firefox 45.0
3
user1412586

1) Geckodriver 0.6.2 herunterladen, entpacken, umbenennen in "wire" und nicht "wire.exe" https://github.com/mozilla/geckodriver/releases

2) Fügen Sie den Pfad für die ausführbare Datei von Drähten zu PATH hinzu (dies ist in meinem Python-Ordner C: Programme\Python ...) Wählen Sie Start und anschließend Systemsteuerung. Doppelklicken Sie auf System, und wählen Sie die Registerkarte Erweitert aus. Klicken Sie auf Umgebungsvariablen. ....__ Geben Sie im Fenster Systemvariable bearbeiten (oder Neue Systemvariable) den Wert der Umgebungsvariable PATH an. ... (Verwenden Sie ';', um die Pfade voneinander zu trennen, d. H. [C: Users\Reuben; C: Program Files\Python).

3) Downgrade auf Firefox 45 https://ftp.mozilla.org/pub/firefox/releases/45.0.2/win64/en-US/

1
Reuben

Firefox muss nicht heruntergestuft werden. Ich habe Probleme mit der Windows- und Firefox-Version 49 gehabt. Ich habe die 64-Bit-Version von Geckodrvier verwendet. Ich habe es in die geckodrvier 32-Bit-Version geändert und das Problem gelöst. Jetzt öffnet sich der Browser ohne Probleme.

1
Sachin Nikam