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 peux pas ouvrir le navigateur. Je reçois l'erreur suivante après la mise à jour de Firefox (avant cela, tout a fonctionné):

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.
36
demandé sur Anthony Geoghegan 2016-06-11 11:32:09

7 réponses

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 au lieu de selenium) pour se connecter à Firefox, à cause d'un bug introduit dans cette version. À partir de la version 48.0 de Firefox, L'ancien pilote sera complètement obsolète et seule Marionette peut être utilisée, il est donc préférable de changer maintenant. Voir: Marionnette Webdriver pour Firefox

Téléchargez le pilote (dans OSX, utilisez simplement brew install geckodriver), renommez l'exécutable en wires.exe on 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 au lieu 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());

lors de l'utilisation de la grille de sélénium:

Lorsque vous utilisez une grille de sélénium le pilote doit être présent dans le chemin pour 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); 
60
répondu Mobrockers 2016-10-30 19:15:47

Fixe : Solution en ce moment est de rétrograder Firefox! exécutez cette commande pour obtenir une liste des versions 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 voulez libérer la version de firefox et autoriser les mises à jour:

sudo apt-mark unhold firefox
sudo apt-get upgrade
11
répondu Alexa Iulian 2016-06-19 19:59:44

Solution : Mise À Niveau de Firefox vers 47.0.1 et Selenium vers 2.53.1.

Cette combinaison a fonctionné pour moi.

Pour plus de détails, reportez-vous à https://stackoverflow.com/a/37728659/6469532

10
répondu Mohit Tater 2017-05-23 12:26:20

Certaines personnes ont le problème que certaines boîtes buttonou select ne peuvent pas être sélectionnées dansmarionette modus.

Une alternative utilise une ancienne version de firefox:

, Vous pouvez télécharger le 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
répondu trantu 2016-06-15 19:03:40

SOLUTION ré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
répondu user1412586 2016-06-22 10:02:34

1) Télécharger geckodriver 0.6.2, décompresser, renommer en" fils "pas" fils.EXE" https://github.com/mozilla/geckodriver/releases

2) Ajoutez l'emplacement exécutable des fils au chemin (je l'ai mis 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 Modifier la Variable système (ou nouvelle Variable système), spécifiez la valeur de la variable D'environnement PATH. ... (Utiliser ';' pour séparer les chemins c'est à dire [C:Users\Reuben;C: Program Files \ Python]

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

1
répondu Reuben 2016-09-27 23:05:31

Pas besoin de rétrograder 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é en version 32 bits geckodrvier et il a résolu le problème. Maintenant, le navigateur ouvre correctement sans aucun problème.

1
répondu Sachin Nikam 2016-11-15 11:56:31