38 votes

Impossible d'ouvrir le navigateur avec Selenium après la mise à jour de Firefox

J'utilise Selenium WebDriver sur Ubuntu Desktop 16.04, et je n'arrive pas à ouvrir le navigateur. J'obtiens l'erreur suivante après la mise à jour de Firefox (avant cela, tout fonctionnait) :

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.

60voto

Mobrockers Points 1943

A partir de la version 47.0 de Firefox (qui est sortie il y a peu), un nouveau pilote doit être utilisé (créé par mozilla au lieu de selenium) pour se connecter à Firefox, à cause d'un bug introduit dans cette version. A partir de la version 48.0 de Firefox, l'ancien pilote sera complètement obsolète et seul Marionette pourra être utilisé, il est donc préférable de changer maintenant. Voir : Marionette Webdriver pour Firefox

Télécharger le conducteur (sous OSX, utilisez simplement brew install geckodriver ), renommez l'exécutable en wires.exe sous Windows, ou wires sur les systèmes *nix, et assurez-vous que l'exécutable est présent dans votre chemin système, puis utilisez ce pilote dans votre programme à la place de l'ancien pilote en utilisant ce qui suit :

Lorsque vous utilisez un webdriver local :

Python :

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

driver = webdriver.Firefox(capabilities=firefox_capabilities)

Ruby :

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());

En utilisant la grille de sélénium :

Lorsque vous utilisez une grille Selenium, le pilote doit être présent dans le chemin d'accès de toutes les machines de votre grille.

Python :

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

Ruby :

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);

11voto

Alexa Iulian Points 300

FIXE : La solution pour l'instant est de rétrograder Firefox ! Exécutez cette commande pour obtenir une liste des versions disponibles de Firefox.

apt-cache show firefox | grep Version

Mon résultat :

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

Installez :

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

Pour conserver cette version et interdire les mises à jour :

sudo apt-mark hold firefox

Si vous voulez déverrouiller la version de firefox et autoriser les mises à jour :

sudo apt-mark unhold firefox
sudo apt-get upgrade

10voto

Mohit Tater Points 303

Solution : Mettre à jour Firefox à 47.0.1 et Selenium à 2.53.1.

Cette combinaison a fonctionné pour moi.

Pour plus de détails, voir https://stackoverflow.com/a/37728659/6469532

4voto

trantu Points 889

Certaines personnes ont le problème que certaines button ou select ne peuvent pas être sélectionnées dans marionette modus.

Une alternative est d'utiliser une ancienne version de firefox :

Vous pouvez télécharger le fichier binaire aquí et l'utiliser ici :

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary

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

3voto

user1412586 Points 68

SOLUTION rétrogradation à la version 45 :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X