web-dev-qa-db-fra.com

Selenium: exception FirefoxProfile Impossible de charger le profil

Per cette question précédente J'ai mis à jour Selenium à la version 2.0.1 Mais maintenant, j'ai une autre erreur, même lorsque les fichiers de profil existent sous /tmp/webdriver-py-profilecopy

 Fichier "/home/sultan/Repository/Django/monitor/app/request.py", ligne 236, dans perform 
 navigateur = Firefox (profil) 
 Fichier "/usr/local/lib/python2.7/dist-packages/Selenium/webdriver/firefox/webdriver.py", ligne 46, dans __init __
 self.binary, timeout), 
 Fichier "/usr/local/lib/python2.7/dist-packages/Selenium/webdriver/firefox/extension_connection.py", ligne 46, dans __init __
 self.binary.launch_browser (self.profile) 
 Fichier "/usr/local/lib/python2.7/dist-packages/Selenium/webdriver/firefox/firefox_binary.py", ligne 44, dans launch_browser 
 self._wait_until_connectable () 
 Fichier "/usr/local/lib/python2.7/dist-packages/Selenium/webdriver/firefox/firefox_binary.py", ligne 87, dans _wait_until_connectable 
 raise WebDriverException ("Impossible de charger le profil. Répertoire du profil:% s"% self.profile.path) 
 Selenium.common.exceptions.WebDriverException: impossible de charger le profil. Dir. Profil: /tmp/webdriver-py-profilecopy

Qu'est-ce qui ne va pas? Comment puis-je résoudre ce problème? 

95
sultan

Mettre à jour:

L'équipe Selenium a été corrigée dans la dernière version. Pour presque tous les environnements, le correctif est le suivant: 

pip installer -U sélénium

Il est difficile de savoir à quelle version elle a été corrigée (apparemment r13122 ), mais elle est certainement fixée à la version 2.26.0 (actuelle au moment de la mise à jour).


Cette erreur signifie que _wait_until_connectable a expiré car, pour une raison quelconque, le code ne peut pas se connecter à l'extension webdriver chargée dans le firefox.

Je viens de signaler une erreur à Selenium, où j'obtiens cette erreur, car j'essaie d'utiliser un proxy et que seulement 2 des 4 modifications configurées dans le profil ont été acceptées par Firefox. Le proxy n'est donc pas configuré pour parler. l'extension. Je ne sais pas pourquoi cela se passe ...

https://github.com/seleniumhq/Selenium-google-code-issue-archive/issues/2061

132
Rachel

J'ai eu le même problème après avoir mis à jour Ubuntu vers 12.04.

Le problème était du côté du paquet et a été corrigé dans la dernière version de la bibliothèque. Il suffit de mettre à jour la bibliothèque Selenium. Pour presque tous les environnements Python, il s'agit de:

pip install -U Selenium
31
user1380597

J'ai rencontré le même problème avec FF 32.0 et Selenium selenium-2.42.1-py2.7.Egg. J'ai essayé de mettre à jour Selenium, mais c'est déjà la dernière version ... La solution consistait à rétrograder Firefox vers la version 30. Voici la procédure:

#Download version 30 for Linux (This is the 64 bit)
wget http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/30.0/linux-x86_64/en-US/firefox-30.0.tar.bz2

tar -xjvf firefox-30.0.tar.bz2
#Remove the old version
Sudo rm -rf /opt/firefox*
Sudo mv firefox /opt/firefox30.0
#Create a permanent link
Sudo ln -sf /opt/firefox30.0/firefox /usr/bin/firefox

Cela a résolu tous les problèmes et cette combinaison fonctionne mieux!

25
Mijo

En prolongement de la réponse de Jeff Hoye , une méthode plus «pythonique» consisterait à sous-classer webdriver.firefox.firefox_profile.FirefoxProfile comme suit:

class CygwinFirefoxProfile(FirefoxProfile):
    @property
    def path(self):
        path = self.profile_dir
        # Do stuff to the path as described in Jeff Hoye's answer
        return path

Ensuite, pour créer votre pilote:

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())
8
Joel Cross

Si pip install -U Selenium ne fonctionne pas (dans mon cas, cela ne fonctionnait pas), essayez de rétrograder votre Firefox vers une version précédente.

J'avais Firefox 49.0 et rétrogradé à 45.0 pour m'assurer que la version est prise en charge par Selenium. Cela a parfaitement fonctionné alors.

Voici un moyen rapide de revenir à Firefox 45.0:

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

J'espère que cela t'aides.

5
Chris

Si vous exécutez webdriver depuis cygwin, le problème est que le chemin d'accès au profil est toujours au format POSIX, ce qui confond les programmes Windows. Ma solution utilise cygpath pour le convertir au format Windows.

dans ce fichier/cette méthode: Selenium.webdriver.firefox.firefox_binary.launch_browser ():

remplacer:

    self._start_from_profile_path(self.profile.path)

avec:

    from subprocess import Popen, PIPE
    proc = Popen(['cygpath','-d',self.profile.path], stdout=PIPE, stderr=PIPE)
    stdout, stderr = proc.communicate()
    path = stdout.split('\n', 1)[0]

    self._start_from_profile_path(path)
    #self._start_from_profile_path(self.profile.path)

Puisque Python n’est même pas proche de mon langage de programmation principal, si quelqu'un peut recommander une approche plus Pythonic, nous pourrons peut-être le pousser dans la distribution. Ce serait pratique si cela fonctionnait avec cygwin dès la sortie de la boîte.

4
Jeff Hoye

J'ai eu le même problème et je pensais que c'était le mauvais combo de Selenium/Firefox. Il s'est avéré que mes autorisations de dossier .mozilla/n'étaient accessibles que par l'utilisateur root. Faire chmod 770 ~/.mozilla/ a fait l'affaire. Je suggérerais de s’assurer que ce n’est pas le problème avant de procéder à un dépannage plus approfondi.

3
chillwx

pip install -U Selenium

J'ai eu le même problème avec Firefox 34.0.5 (Dec 1, 2014) et la mise à niveau de Selenium de 2.42.1 à 2.44.0 a résolu mon problème.

Cependant, j'ai depuis revu ce problème, je pense avec la version 2.44.0, et une autre mise à niveau a corrigé le problème. Je me demande donc si cela pourrait être corrigé simplement en désinstallant puis en réinstallant. Si oui, je ne suis pas sûr de ce que cela indiquerait comme étant le problème sous-jacent.

1
Rob Bednark

J'utilisais Selenium 2.53 et Firefox version 55.0. J'ai résolu ce problème en installant l'ancienne version de firefox (46.0.1) car Selenium 2.53 ne fonctionnerait pas pour firefox version 47.0 et ultérieure.

0
Rashid