web-dev-qa-db-fra.com

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 ne parviens pas à ouvrir le navigateur. J'obtiens l'erreur suivante après la mise à jour de Firefox (auparavant, tout fonctionnait bien):

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

CORRIG&EACUTE;: La solution actuelle 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

Installer:

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 souhaitez supprimer la version de Firefox et autoriser les mises à jour:

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

A partir de la version 47.0 de Firefox (qui est sorti un peu plus tôt), un nouveau pilote doit être utilisé (créé par mozilla à la place de Selenium) pour se connecter à Firefox, en raison d'un bogue introduit dans cette version. À partir de la version 48.0 de Firefox, l’ancien pilote sera complètement déconseillé et seule Marionette peut être utilisée. Il est donc préférable de changer de pilote maintenant. Voir: Marionette Webdriver pour Firefox

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

Lors de l'utilisation d'un WebDriver local:

Python:

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

driver = webdriver.Firefox(capabilities=firefox_capabilities)

Rubis:

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

Lorsque vous utilisez la grille de sélénium:

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

Python:

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

Rubis:

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: Mettez à niveau Firefox vers 47.0.1 et Selenium vers 2.53.1.

Cette combinaison a fonctionné pour moi.

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

10
Mohit Tater

Certaines personnes croient que certaines cases buttons ou select ne peuvent pas être sélectionnées dans le mode marionette.

Une alternative consiste à utiliser l'ancienne version de Firefox:

Vous pouvez télécharger le fichier binaire ici 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)
4
trantu

SOLUTIONrétrograder à 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
3
user1412586

1) Téléchargez geckodriver 0.6.2, décompressez-le, renommez-le en "fils" et non en "fils.exe" https://github.com/mozilla/geckodriver/releases

2) Ajoutez l’emplacement exécutable des fils dans PATH (je mets ceci dans mon dossier python C: Program Files\Python ...) Sélectionnez Démarrer, sélectionnez Panneau de configuration. double-cliquez sur Système et sélectionnez l'onglet Avancé ..__ Cliquez sur Variables d'environnement. ... Dans la fenêtre Edit System Variable (ou New System Variable), indiquez la valeur de la variable d'environnement PATH. ... (Utilisez ';' pour séparer les chemins, c'est-à-dire [C: Users\Reuben; C: Program Files\Python]

3) rétrograder à Firefox 45 https://ftp.mozilla.org/pub/firefox/releases/45.0.2/win64/en-US/

1
Reuben

Pas besoin de déclasser Firefox. J'ai rencontré un problème avec Windows et Firefox 49 version. J'utilisais la version 64 bits de geckodrvier. Je l'ai changé pour la version 32 bits de geckodrvier et cela a résolu le problème. Maintenant, le navigateur s'ouvre correctement sans aucun problème.

1
Sachin Nikam