Selenium: exception FirefoxProfile Impossible de charger le profil

96

Selon cette question précédente, j'ai mis à jour Selenium vers 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, en cours d'exécution
    browser = 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
    lever WebDriverException ("Impossible de charger le profil. Répertoire du profil:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: impossible de charger le profil. Répertoire de profil: / tmp / webdriver-py-profilecopy

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

sultan
la source

Réponses:

132

Mettre à jour:

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

pip install -U sélénium

On ne sait pas à quelle version il a été corrigé (apparemment r13122 ), mais certainement par 2.26.0 (actuel au moment de la mise à jour), il est corrigé.


Cette erreur signifie que _wait_until_connectable arrive à expiration, car pour une raison quelconque, le code ne peut pas se connecter à l'extension Webdriver qui a été chargée dans Firefox.

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

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

Rachel
la source
3
L'ajout d'un sudoest requis s'il n'est pas connecté en tant que root. Quoi qu'il en soit, c'était une bouée de sauvetage! Merci!!
Abhranil Das
Oui, cela aide à corriger WebDriverException: Message: 'Impossible de charger le profil.
tom joy
5
@AbhranilDas Vous n'en avez pas besoin sudosi vous utilisez un virtualenv(que vous devriez probablement utiliser).
Kos
7
Non, cette solution ne fonctionne pas avec Firefox 45.0b et le dernier Selenium (2.5.1)
Alex GP
1
@ AlexG.P. J'ai écrit pour la première fois la réponse à cette question il y a 4,5 ans. Je soupçonne que suffisamment de temps s'est écoulé pour que cela vaille la peine de soulever une nouvelle question. Si vous le faites, veuillez inclure une référence à cette question et: a) les versions de Firefox et Selenium que vous avez données ci-dessus; b) votre système d'exploitation; c) votre version de pip. Je suppose que votre problème pourrait être lié à la version pip, car cela a changé au cours des 5 dernières années.
Rachel le
31

J'ai eu le même problème après la mise à niveau d'Ubuntu vers 12.04.

Le problème était du côté du package et a été résolu dans la dernière version de la bibliothèque. Mettez simplement à jour la bibliothèque de sélénium. Pour presque tous les environnements Python, c'est:

pip install -U selenium
user1380597
la source
Je ne sais pas pourquoi, mais ayant du sélénium 2.28.0, j'ai le même problème avec FireFox 22.0 et 23.0 sur Ubuntu. Seule la rétrogradation de Firefox vers 18.0 fonctionne très bien pour moi (je n'ai jamais vérifié les autres versions).
Dmitry
26

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 le sélénium, mais c'est déjà la dernière version. La solution était de rétrograder Firefox vers la version 30. Voici le processus:

#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!

Mijo
la source
cela a corrigé ma configuration !!
Macumbaomuerte
Comment rétrograder Firefox sur mon Mac? J'utilise scrapy / sélénium sur mon mactop sur «virtualenv» et j'ai la même erreur. Je pense que si je rétrogradais sur mon mac, cela résoudrait le problème.
brkr
8

Pour prolonger la réponse de Jeff Hoye , une manière plus `` pythonique '' serait de sous-classer webdriver.firefox.firefox_profile.FirefoxProfilecomme 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())
Joel Cross
la source
5

Si pip install -U seleniumcela ne fonctionne pas (ce n'est pas le cas, dans mon cas), essayez de rétrograder votre Firefox vers une version précédente.

J'avais Firefox 49.0 et je l'ai rétrogradé à 45.0 pour m'assurer que la version est prise en charge par le sélénium. Cela fonctionnait parfaitement 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.

Chris
la source
4

Si vous exécutez webdriver à partir de 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 / 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 pythonique, peut-être pouvons-nous le pousser dans la distribution. Ce serait certainement pratique si cela fonctionnait dans cygwin dès la sortie de la boîte.

Jeff Hoye
la source
3

J'ai eu le même problème et je pensais que c'était la mauvaise combinaison de sélénium / Firefox. Il s'est avéré que mes autorisations de dossier .mozilla / n'étaient accessibles qu'à l'utilisateur root. Cela a chmod 770 ~/.mozilla/fait l'affaire. Je suggérerais de m'assurer que ce n'est pas le problème avant de poursuivre le dépannage.

chillwx
la source
1

pip install -U selenium

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

Cependant, j'ai depuis revu ce problème, je pense qu'avec 2.44.0, et une autre mise à jour l'a corrigé. Je me demande donc si cela pourrait être résolu simplement en désinstallant puis en réinstallant. Si tel est le cas, je ne sais pas ce que cela indiquerait comme étant le problème sous-jacent.

Rob Bednark
la source
J'ai exactement le même problème avec 2.44 et FF35 dans Windows
pylover
0

J'utilisais le sélénium 2.53 et la version 55.0 de Firefox. J'ai résolu ce problème en installant l'ancienne version de Firefox (46.0.1) car le sélénium 2.53 ne fonctionnera pas pour la version 47.0 et supérieure de Firefox.

Rashid
la source
-1

Ce n'est pas une bonne solution mais cela a fonctionné pour moi, si quelqu'un peut s'améliorer, je serais heureux de le savoir. Je viens de lancer mon script en tant que root: sudo python myscript.py. Je suppose que je peux résoudre en changeant le fichier ou le répertoire par défaut du profil pourrait fonctionner.


la source