instalar example como python firefox selenium selenium-webdriver webdriver

python - example - Selenium: FirefoxProfile excepción No se puede cargar el perfil



selenium python example (10)

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 :

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é está mal? ¿Cómo puedo resolver este problema?


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

Luego, para crear su controlador:

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


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. 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 resolvió todos los problemas, y esta combinación funciona mejor!


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


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


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

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

Esta es una forma rápida de degradar a Firefox 45.0:

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

Espero que esto ayude.


Si está ejecutando webdriver desde cygwin, el problema es que la ruta al perfil todavía está en formato POSIX, lo que confunde 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)

Dado que Python ni siquiera está cerca de mi lenguaje de programación principal, si alguien puede recomendar un enfoque más pitónico, quizás podamos insertarlo en la distribución. Seguramente sería útil si funcionaba en cygwin nada más sacarlo de la caja.


Tuve el mismo problema después de actualizar Ubuntu a 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 de Python esto es:

pip install -U selenium


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.


pip install -U selenium

Tuve el mismo problema con Firefox 34.0.5 (Dec 1, 2014) y la actualización de Selenium de 2.42.1 a 2.44.0 resolvió 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.


Actualizar:

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

pip install -U selenio

No está claro en qué versión fue corregido (aparentemente r13122 ), pero ciertamente por 2.26.0 (actual en el momento de la actualización) es fijo.

Este error significa que _wait_until_connectable está caducando, porque, por alguna razón, el código no se puede conectar a la extensión de webdriver que se ha cargado en 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 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