web-dev-qa-db-fra.com

Comment réparer Selenium WebDriverException: Le navigateur semble s'être arrêté avant que nous puissions nous connecter

J'ai installé firefox et Xvfb sur mon serveur centos6.4 pour utiliser Selenium WebDriver.

Mais, quand j'ai exécuté le code, j'ai eu une erreur.

from Selenium import webdriver
browser = webdriver.Firefox()

Erreur

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

J'ai lu des pages liées sur stackoverflow et quelqu'un a suggéré de supprimer tous les fichiers du dossier tmp, je l'ai donc fait. Mais ça ne marche toujours pas.

Quelqu'un pourrait-il me donner une aide s'il vous plaît?

Merci d'avance!

Modifier

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

pour les Googlers, cette réponse ne fonctionnait pas pour moi et je devais utiliser cette réponse à la place. J'utilise AWS Ubuntu. 

En gros, je devais installer Xvfb, puis pyvirtualdisplay:

Sudo apt-get install xvfb
Sudo pip install pyvirtualdisplay

Une fois que j'ai fait cela, ce code python a fonctionné:

#!/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()

Merci à @ That1Guy pour la première réponse

68
Davidjb

Je courais dans sur un serveur (sans tête) Ubuntu 14.04 avec Jenkins et xvfb installés. J'avais installé la dernière version stable de Firefox (47), qui a démarré une version qui échouait et qui exécutait un script python utilisant le pilote Firefox pour Selenium (version 2.53).

Apparemment, Firefox 47+ n'est pas compatible avec le pilote utilisé dans Selenium 2.53, et Selenium 3+ utilisera un nouveau pilote appelé "Marionette" ou "Gecko Driver" (qui n'est pas encore officiellement publié).

Cette page explique comment utiliser assez bien le nouveau pilote, en plusieurs langues: https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver

Fondamentalement:

  1. récupère/construit l'exécutable à partir du projet sur github: https://github.com/mozilla/geckodriver/releases (et assurez-vous que ses permanentes sont définies pour être exécutables, IE chmod a+x /path/to/geckdriver-executable)
  2. renommer/copier le binaire en "fils"
  3. assurez-vous que l'emplacement du binaire est ajouté au PATH utilisé par la construction lors de l'exécution du test Selenium
  4. mettre à jour le test Selenium pour utiliser le nouveau pilote

Pour Python, l’étape 4 ressemblait à ce qui suit:

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

Moi aussi j'avais rencontré le même problème. J'étais sur Firefox 47 et Selenium 2.53; J'ai rétrogradé Firefox à 45. Cela a fonctionné.

  1. Commencez par supprimer Firefox 47:

    Sudo apt-get purge firefox
    
  2. Vérifier les versions disponibles:

    apt-cache show firefox | grep Version
    

    Il montrera les versions disponibles de Firefox comme:

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

  3. Installer une version spécifique

    Sudo apt-get install firefox=45.0.2+build1-0ubuntu1
    
  4. Ensuite, vous ne devez plus effectuer de mise à niveau vers la nouvelle version.

    Sudo apt-mark hold firefox
    
  5. Si vous voulez mettre à jour plus tard

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

Vérifiez votre variable d'environnement DISPLAY. Exécutez echo $DISPLAY en ligne de commande.

Si rien n'est imprimé, vous exécutez FireFox sans aucun AFFICHAGE attribué. Vous devriez en assigner un! Exécutez export DISPLAY=:1 dans la ligne de commande avant d’exécuter votre script python.

Consultez ce fil pour plus d’informations: http://hashcat.net/forum/thread-1973.html

11
Bilal Naqvi

Je pense que la solution la plus simple est de lancer Python avec xvfb-run:

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

Au lieu de rétrograder firefox de la version 47 à la version 45 ou quelque chose que je suggérerais de mettre à niveau à 47.0.1 ou supérieur, car ils semblent résoudre un problème.

Mais si votre système d'exploitation n'a pas de nouveaux paquets dans le référentiel (par exemple, Ubuntu 14.04 à l'heure de cette réponse), vous pouvez utiliser les debs du projet Ubuntuzilla:

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

Pour x86, utilisez _i386.deb postfix . Ce problème s’est vendu à moi

1
valignatev

Restaurez Firefox dans la version de travail précédente. Je suggère 2 versions en arrière. Désactiver le service de maintenance de Firefox. 

Je travaillais sur une solution et le service de maintenance de Firefox a mis à jour Firefox avec la dernière version en arrière-plan. Cela a cassé mon code et il me donnait cette erreur. 

Maintenant c'est réparé!

Merci tout le monde!

1
Jacob George

Cette erreur est due à votre Xvfb n'est pas en cours d'exécution. Alors redémarrez votre xvfb:

Xvfb :99 -ac

puis vérifiez . Cela fonctionne pour moi.

1
Ashok Devatwal

J'ai résolu ce problème en exécutant un chown récursif non seulement contre le script python utilisant Selenium, mais également contre l'intégralité de virtualenv dans laquelle le script était exécuté. Après cela, cette erreur est partie.

0
melchoir55

J'ai également fait face au même problème, ce que j'ai fait était:

  1. Mettre à jour le paquet Selenium

    Sudo pip install -U Selenium
    
  2. Au lieu de revenir à la version précédente (comme suggéré), je suis passé à la version plus récente (48.0, j’utilisais auparavant la version 47.0) . version)

0
Neeraj Komuravalli