Selenium: excepción de FirefoxProfile No se puede cargar el perfil

96

Según esta pregunta anterior , actualicé Selenium a la versión 2.0.1 Pero ahora tengo otro error, incluso cuando los archivos de perfil existen en /tmp/webdriver-py-profilecopy:

  Archivo "/home/sultan/Repository/Django/monitor/app/request.py", línea 236, en realizar
    browser = Firefox (perfil)
  Archivo "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", línea 46, en __init__
    self.binary, timeout),
  Archivo "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", línea 46, en __init__
    self.binary.launch_browser (auto.perfil)
  Archivo "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", línea 44, en launch_browser
    self._wait_until_connectable () 
  Archivo "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", línea 87, en _wait_until_connectable
    raise WebDriverException ("No se puede cargar el perfil. Perfil Dir:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: no se puede cargar el perfil. Dir de perfil: / tmp / webdriver-py-profilecopy

¿Qué está mal? ¿Cómo puedo resolver este problema?

sultán
fuente

Respuestas:

132

Actualizar:

Equipo de selenio arreglado en la última versión. Para casi todos los entornos, la solución es:

pip instalar -U selenio

No está claro en qué versión se corrigió (aparentemente r13122 ), pero ciertamente en la 2.26.0 (actual en el momento de la actualización) se corrigió.


Este error significa que _wait_until_connectable está agotando el tiempo de espera, porque por alguna razón, el código no puede conectarse a la extensión webdriver que se ha cargado en Firefox.

Acabo de informar un error a selenium en el que recibo este error porque estoy intentando 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 está configurado para hablar con la extensión. No estoy seguro de por qué ocurre esto...

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

Raquel
fuente
3
sudoEs necesario agregar un si no ha iniciado sesión como root. De todos modos, ¡esto fue un salvavidas! ¡¡Gracias!!
Abhranil Das
Sí, ayuda a solucionar WebDriverException: Mensaje: 'No se puede cargar el perfil.
tom joy
5
@AbhranilDas No es necesario sudosi está usando un virtualenv(que probablemente debería usar).
Kos
7
No, esta solución no funciona con Firefox 45.0by la última versión de Selenium (2.5.1)
Alex GP
1
@ AlexG.P. Escribí la respuesta a esta pregunta por primera vez hace 4,5 años. Sospecho que ha pasado suficiente tiempo como para que valga la pena plantear una nueva pregunta. Si lo hace, incluya una referencia a esta pregunta y: a) las versiones de Firefox y Selenium que proporcionó anteriormente; b) su sistema operativo; c) su versión de pip. Supongo que su problema podría estar relacionado con la versión pip, porque eso ha cambiado en los últimos 5 años.
Rachel
31

Tuve el mismo problema después de actualizar Ubuntu a 12.04.

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

pip install -U selenium
usuario1380597
fuente
No sé por qué, pero teniendo selenio 2.28.0 tengo el mismo problema con FireFox 22.0 y 23.0 en Ubuntu. Solo la degradación de Firefox a 18.0 funciona bien para mí (nunca verifiqué otras versiones).
Dmitry
26

Enfrenté 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 degradar Firefox a la versión 30. Este es 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 resolvió todos los problemas y esta combinación funciona mejor!

Mijo
fuente
esto arregló mi configuración !!
Macumbaomuerte
¿Cómo puedo degradar Firefox en mi mac? Estoy usando scrapy / selenium en mi mactop en 'virtualenv' y tengo el mismo error. Creo que si degradara mi Mac, lo arreglaría.
brkr
8

Como una extensión de la respuesta de Jeff Hoye , una forma más 'Pythonic' sería subclasificar de la webdriver.firefox.firefox_profile.FirefoxProfilesiguiente 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

Luego, para crear su controlador:

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

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

Tenía Firefox 49.0 y lo bajé a 45.0 para asegurarme de que la versión sea compatible con selenium. Entonces funcionó perfectamente.

Aquí hay una forma rápida de cambiar a Firefox 45.0:

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

Espero que esto ayude.

Chris
fuente
4

Si está ejecutando webdriver desde cygwin, el problema es que la ruta al perfil todavía está en formato POSIX, lo que confunde a los programas de Windows. Mi solución usa cygpath para convertirlo al 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)

Dado que Python ni siquiera se acerca a mi lenguaje de programación principal, si alguien puede recomendar un enfoque más pitónico, tal vez podamos introducirlo en la distribución. Seguro que sería útil si funcionara en cygwin nada más sacarlo de la caja.

Jeff Hoye
fuente
3

Tuve el mismo problema y creí que era la combinación incorrecta de selenium / Firefox. Resultó que mis permisos de carpeta .mozilla / solo eran accesibles para el usuario root. Haciendo chmod 770 ~/.mozilla/el truco. Sugeriría asegurarse de que este no sea el problema antes de continuar con la resolución de problemas.

chillwx
fuente
1

pip install -U selenium

Tuve este mismo problema con la Firefox 34.0.5 (Dec 1, 2014)actualización de Selenium 2.42.1para 2.44.0resolver 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 volviendo a instalar. Si es así, no estoy seguro de qué indicaría el problema subyacente.

Rob Bednark
fuente
Tengo exactamente el mismo problema con 2.44 y ff35 en Windows
pylover
0

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

Rashid
fuente
-1

Esta no es una solución adecuada, pero funcionó para mí, si alguien puede mejorar, me alegraría saberlo. Yo sólo paso la secuencia de comandos como root: sudo python myscript.py. Supongo que puedo resolver cambiando el archivo o directorio predeterminado del perfil que podría funcionar.


fuente