Selen: FirefoxProfile-Ausnahme Das Profil kann nicht geladen werden

96

Aufgrund dieser vorherigen Frage habe ich Selenium auf Version 2.0.1 aktualisiert. Jetzt habe ich einen weiteren Fehler, auch wenn die Profildateien unter /tmp/webdriver-py-profilecopy:

  Datei "/home/sultan/Repository/Django/monitor/app/request.py", Zeile 236, in perform
    browser = Firefox (Profil)
  Datei "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", Zeile 46, in __init__
    self.binary, timeout),
  Datei "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", Zeile 46, in __init__
    self.binary.launch_browser (self.profile)
  Datei "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", Zeile 44, in launch_browser
    self._wait_until_connectable () 
  Datei "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", Zeile 87, in _wait_until_connectable
    WebDriverException auslösen ("Profil kann nicht geladen werden. Profilverzeichnis:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: Das Profil kann nicht geladen werden. Profil Dir: / tmp / webdriver-py-profilecopy

Was ist falsch? Wie kann ich dieses Problem beheben?

Sultan
quelle

Antworten:

132

Aktualisieren:

Selenium Team in der neuesten Version behoben. Für fast alle Umgebungen lautet die Lösung:

Pip installieren -U Selen

Unklar, bei welcher Version es behoben wurde (anscheinend r13122 ), aber sicherlich um 2.26.0 (aktuell zum Zeitpunkt der Aktualisierung) ist es behoben.


Dieser Fehler bedeutet, dass _wait_until_connectable eine Zeitüberschreitung aufweist, da der Code aus irgendeinem Grund keine Verbindung zu der in den Firefox geladenen Webdriver-Erweiterung herstellen kann.

Ich habe gerade einen Fehler an Selen gemeldet, bei dem ich diesen Fehler erhalte, weil ich versuche, einen Proxy zu verwenden, und nur 2 der 4 konfigurierten Änderungen im Profil von Firefox akzeptiert wurden, sodass der Proxy nicht für die Kommunikation konfiguriert ist die Erweiterung. Ich bin mir nicht sicher, warum das passiert ...

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

Rachel
quelle
3
Das Hinzufügen von a sudoist erforderlich, wenn Sie nicht als root angemeldet sind. Jedenfalls war dies ein Lebensretter! Vielen Dank!!
Abhranil Das
Ja, es hilft, WebDriverException zu beheben: Meldung: 'Profil kann nicht geladen werden.
Tom Joy
5
@AbhranilDas Sie brauchen nicht, sudowenn Sie eine verwenden virtualenv(die Sie wahrscheinlich verwenden sollten).
Kos
7
Nein, diese Lösung funktioniert nicht mit Firefox 45.0b und dem neuesten Selenium (2.5.1)
Alex GP
1
@ AlexG.P. Die Antwort auf diese Frage habe ich vor 4,5 Jahren geschrieben. Ich vermute, dass genug Zeit vergangen ist, um eine neue Frage zu stellen. Wenn Sie dies tun, fügen Sie bitte einen Verweis auf diese Frage hinzu und: a) die Firefox- und Selenium-Versionen, die Sie oben angegeben haben; b) Ihr Betriebssystem; c) Ihre Version von pip. Ich würde vermuten, dass Ihr Problem mit der Pip-Version zusammenhängt, da sich dies in den letzten 5 Jahren geändert hat.
Rachel
31

Ich hatte das gleiche Problem nach dem Upgrade von Ubuntu auf 12.04.

Das Problem war paketseitig und wurde in der neuesten Version der Bibliothek behoben. Aktualisieren Sie einfach die Selenbibliothek. Für fast alle Python-Umgebungen gilt Folgendes:

pip install -U selenium
user1380597
quelle
Ich weiß nicht warum, aber mit Selen 2.28.0 habe ich das gleiche Problem mit FireFox 22.0 und 23.0 unter Ubuntu. Nur ein Downgrade von Firefox auf 18.0 funktioniert für mich einwandfrei (andere Versionen wurden nie überprüft).
Dmitry
26

Ich hatte das gleiche Problem mit FF 32.0 und Selen Selen-2.42.1-py2.7.egg. Versucht, Selen zu aktualisieren, aber es ist bereits die neueste Version. Die Lösung bestand darin, Firefox auf Version 30 herunterzustufen. Hier ist der Prozess:

#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

Dies löste alle Probleme und diese Kombination funktioniert besser!

Mijo
quelle
das hat mein Setup behoben !!
Macumbaomuerte
Wie kann ich Firefox auf meinem Mac herunterstufen? Ich verwende Scrapy / Selen auf meinem Mactop auf 'virtualenv' und habe den gleichen Fehler. Ich denke, wenn ich auf meinem Mac ein Downgrade durchführen würde, würde dies das Problem beheben.
brkr
8

Als Erweiterung von Jeff Hoyes Antwort wäre ein eher pythonischer Weg, die Unterklasse webdriver.firefox.firefox_profile.FirefoxProfilewie folgt zu unterteilen:

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

So erstellen Sie Ihren Treiber:

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())
Joel Cross
quelle
5

Wenn pip install -U seleniumdies nicht funktioniert (in meinem Fall nicht), versuchen Sie, Ihren Firefox auf eine frühere Version herunterzustufen.

Ich hatte Firefox 49.0 und wurde auf 45.0 heruntergestuft, um sicherzustellen, dass die Version von Selen unterstützt wird. Es hat dann perfekt funktioniert.

Hier ist ein schneller Weg zum Downgrade auf Firefox 45.0:

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

Hoffe das hilft.

Chris
quelle
4

Wenn Sie einen Webdriver von Cygwin aus ausführen, besteht das Problem darin, dass der Pfad zum Profil immer noch im POSIX-Format vorliegt, was Windows-Programme verwirrt. Meine Lösung verwendet Cygpath, um es in das Windows-Format zu konvertieren.

in dieser Datei / Methode: selenium.webdriver.firefox.firefox_binary.launch_browser ():

ersetzen:

    self._start_from_profile_path(self.profile.path)

mit:

    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)

Da Python nicht einmal meiner primären Programmiersprache nahe kommt, können wir es vielleicht in die Distribution verschieben, wenn jemand einen pythonischeren Ansatz empfehlen kann. Es wäre sicher praktisch, wenn es in Cygwin sofort funktionieren würde.

Jeff Hoye
quelle
3

Ich hatte das gleiche Problem und glaubte, es sei die falsche Kombination aus Selen / Firefox. Es stellte sich heraus, dass meine .mozilla / Ordner-Berechtigungen nur dem Root-Benutzer zugänglich waren. Das chmod 770 ~/.mozilla/hat den Trick gemacht. Ich würde vorschlagen, sicherzustellen, dass dies nicht das Problem ist, bevor Sie die Fehlerbehebung fortsetzen.

chillwx
quelle
1

pip install -U selenium

Ich hatte das gleiche Problem mit Firefox 34.0.5 (Dec 1, 2014)Selenium und ein Upgrade von 2.42.1, 2.44.0um mein Problem zu beheben.

Allerdings habe ich dieses Problem seitdem wieder gesehen, denke ich mit 2.44.0, und ein anderes Upgrade hat es behoben. Ich frage mich also, ob es möglicherweise durch einfaches Deinstallieren und erneutes Installieren behoben werden kann. Wenn ja, bin ich mir nicht sicher, was das zugrunde liegende Problem bedeuten würde.

Rob Bednark
quelle
Ich habe genau das gleiche Problem mit 2.44 und ff35 in Windows
Pylover
0

Ich habe Selen 2.53 und Firefox Version 55.0 verwendet. Ich habe dieses Problem durch die Installation der älteren Version von Firefox (46.0.1) gelöst, da Selen 2.53 für Firefox Version 47.0 und höher nicht funktioniert.

Rashid
quelle
-1

Dies ist keine richtige Lösung, hat aber für mich funktioniert. Wenn sich jemand verbessern kann, würde ich mich freuen, es zu wissen. Ich führe mein Skript einfach als root aus : sudo python myscript.py. Ich denke, ich kann lösen, indem ich die Standarddatei des Profils ändere oder das Verzeichnis funktionieren könnte.


quelle