2011-07-13 21 views
88

por this previous question I selenio actualizado a la versión 2.0.1 Pero ahora tengo otro error, incluso cuando existen los archivos de perfil bajo /tmp/webdriver-py-profilecopy:Selenio: FirefoxProfile excepción no puede cargar el perfil

 
    File "/home/sultan/Repository/Django/monitor/app/request.py", line 236, in perform 
    browser = Firefox(profile) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 46, in __init__ 
    self.binary, timeout), 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 46, in __init__ 
    self.binary.launch_browser(self.profile) 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 44, in launch_browser 
    self._wait_until_connectable() 
    File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 87, in _wait_until_connectable 
    raise WebDriverException("Can't load the profile. Profile Dir : %s" % self.profile.path) 
selenium.common.exceptions.WebDriverException: Can't load the profile. Profile Dir : /tmp/webdriver-py-profilecopy 

Qué hay de malo ? ¿Cómo puedo resolver este problema?

Respuesta

130

Actualización:

equipo de selenio corregido en la versión más reciente. Para casi todos los ambientes de la solución es:

pip instalación -U selenio

claro en qué versión se fija (al parecer r13122), pero sin duda por 2.26.0 (actualizada al momento de la actualización) está arreglado.


Este error significa que _wait_until_connectable es el tiempo de espera, porque por alguna razón, el código no se puede conectar a la extensión WebDriver que ha sido cargado en el Firefox.

Acabo de informar un error al selenio donde recibo este error porque estoy tratando de usar un proxy y solo 2 de los 4 cambios configurados en el perfil han sido aceptados por firefox, por lo que el proxy no es configurado para hablar con la extensión. No sé por qué esto está ocurriendo ...

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

+3

Agregar un 'sudo' es obligatorio si no se ha iniciado sesión como root. De todos modos, esto fue un salvavidas! ¡¡Gracias!! –

+0

Sí, ayuda a reparar WebDriverException: Mensaje: 'No se puede cargar el perfil. –

+5

@AbhranilDas No necesita 'sudo' si está usando' virtualenv' (que probablemente debería usar). – Kos

31

que tenían el mismo problema después de actualizar a Ubuntu 12.04.

El problema estaba en el lado del paquete y se ha corregido en la última versión de la biblioteca. Simplemente actualice la biblioteca de selenio. Para casi todos los entornos Python esto es:

pip install -U selenium 
+0

No sé por qué, pero teniendo selenio 2.28.0 Tengo el mismo problema con FireFox 22.0 y 23.0 en Ubuntu. Solo bajar de categoría Firefox a 18.0 funciona bien para mí (nunca revisé otras versiones). – Dmitry

3

Si está ejecutando WebDriver de cygwin, el problema es que la ruta de acceso al perfil sigue en formato POSIX que confunde a los programas de Windows. Mi solución usa cygpath para convertirlo a formato de Windows.

en este archivo/Método: selenium.webdriver.firefox.firefox_binary.launch_browser():

reemplazar:

self._start_from_profile_path(self.profile.path) 

con:

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) 

Como Python no es ni siquiera cerca de mi lenguaje de programación principal, si alguien puede recomendar un enfoque más pythonic tal vez podamos insertarlo en la distribución. Seguramente sería útil si funcionaba en cygwin nada más sacarlo de la caja.

6

Como una extensión a Jeff Hoye 'respuesta s, una forma más 'forma Pythonic' habría subclase webdriver.firefox.firefox_profile.FirefoxProfile de la siguiente manera:

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 

Entonces, para crear su conductor:

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile()) 
23

Tuve el mismo problema con FF 32.0 y Selenium selenium-2.42.1-py2.7.egg. Intenté actualizar el selenio, pero ya es la última versión. La solución fue la de rebajar Firefox a la versión 30. Aquí está el proceso:

#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 

Esto resuelve todos los problemas, y esta combinación funciona mejor!

+0

Impresionante. ¡Gracias! –

+0

esto arregló mi configuración !! – Macumbaomuerte

+0

¿Cómo puedo degradar Firefox en mi Mac? Utilizo scrapy/selenium en mi mactop en 'virtualenv' y tengo el mismo error. Creo que si me degradaron en mi mac lo arreglaría. – brkr

1

pip install -U selenium

tenía este mismo problema con Firefox 34.0.5 (Dec 1, 2014) y la mejora de selenio a partir de 2.42.1 a 2.44.0 resuelto mi problema.

Sin embargo, desde entonces he vuelto a ver este problema, creo que con 2.44.0 y otra actualización lo solucionó. Así que me pregunto si podría solucionarse simplemente desinstalando y luego reinstalando. Si es así, no estoy seguro de lo que eso indicaría que el problema subyacente es.

+0

Tengo exactamente el mismo problema con 2.44 y ff35 en windows – pylover

-1

Esta no es una solución adecuada, pero funcionó para mí, si alguien puede mejorar estaría encantado de saberlo. Acabo de ejecutar mi script como root: sudo python myscript.py. Supongo que puedo resolver cambiando el perfil del archivo predeterminado o el directorio podría funcionar.

3

Tuve el mismo problema y creí que era la combinación incorrecta de selenio/Firefox. Resultó que mis permisos de carpeta .mozilla/solo eran accesibles para el usuario raíz. Hacer chmod 770 ~/.mozilla/ hizo el truco. Sugiero que este no sea el problema antes de seguir con la solución de problemas.

5

Si pip install -U selenium no funciona (no funcionó, en mi caso), intente degradar su Firefox a una versión anterior.

Tenía Firefox 49.0 y me he degradado a 45.0 para asegurarme de que la versión sea compatible con el selenio. Funcionó perfectamente entonces.

Aquí está una manera rápida de cambiar a Firefox 45.0:

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

Espero que esto ayude.

+0

¿qué versión de selenio funciona con FF.45? –

0

Estaba usando selenio 2.53 y la versión de Firefox 55.0. Resolví este problema instalando la versión anterior de firefox (46.0.1) ya que el selenio 2.53 no funcionará para la versión 47.0 de Firefox & anterior.

Cuestiones relacionadas