Python Selenium: error en el perfil de Firefox

Estoy usando Python 2.7.3 , selenium 2.48.0 en Raspbian OS (dispositivo sin cabeza). La versión de Iceweasel/Firefox es 38.4 .

Importe selenium como este:

 from selenium import webdriver 

Luego defino el driver:

 browser = webdriver.Firefox() 

Cuando ejecuto este código, se ejecuta durante unos 15 segundos y emite este error:

 Traceback (most recent call last): File "Dbfull3.py", line 114, in  data=getdata() File "Dbfull3.py", line 17, in getdata browser = webdriver.Firefox() File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 77, in __init__ self.binary, timeout), File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 49, in __init__ self.binary.launch_browser(self.profile) File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser self._wait_until_connectable() File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 103, in _wait_until_connectable raise WebDriverException("Can't load the profile. Profile " selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Profile Dir: %s If you specified a log_file in the FirefoxBinary constructor, check it for details. 

Al investigar este error, encontré casos similares de StackOverflow y otros lugares, pero muchos son del entorno de Windows o errores de diferentes paquetes. Una solución sugerida fue usar una versión diferente de Firefox/Iceweasel pero no pude encontrar otras versiones disponibles para mi OS .

También he intentado ejecutar mi código como root pero el resultado es el mismo.

A pesar del error, cada vez que se ejecuta este comando, se crea un nuevo perfil en /tmp :

 user@host ~/bin $ ls -l /tmp/tmpiV4R0H/ total 11952 drwxr-xr-x 2 user user 4096 Dec 10 18:42 amd64 -rw-r--r-- 1 user user 183494 Dec 10 18:42 blocklist.xml drwx------ 2 user user 4096 Dec 10 18:43 bookmarkbackups drwx------ 4 user user 4096 Dec 10 18:42 cache2 -rw------- 1 user user 65536 Dec 10 18:43 cert8.db -rw------- 1 user user 188 Dec 10 18:42 compatibility.ini -rw-r--r-- 1 user user 229376 Dec 10 18:42 content-prefs.sqlite -rw-r--r-- 1 user user 524288 Dec 10 18:43 cookies.sqlite -rw------- 1 user user 4182 Dec 10 18:43 directoryLinks.json drwxr-xr-x 3 user user 4096 Dec 10 18:42 extensions -rw-r--r-- 1 user user 259 Dec 10 18:42 extensions.ini -rw------- 1 user user 2154 Dec 10 18:43 extensions.json drwx------ 2 user user 4096 Dec 10 18:42 gmp -rw------- 1 user user 16384 Dec 10 18:42 key3.db lrwxrwxrwx 1 user user 16 Dec 10 18:42 lock -> 127.0.1.1:+29581 -rw-r--r-- 1 user user 3319 Dec 10 18:43 mimeTypes.rdf -rw-r--r-- 1 user user 65536 Dec 10 18:42 permissions.sqlite -rw-r--r-- 1 user user 10485760 Dec 10 18:43 places.sqlite -rw-r--r-- 1 user user 32768 Dec 10 18:42 places.sqlite-shm -rw-r--r-- 1 user user 557496 Dec 10 18:43 places.sqlite-wal -rw------- 1 user user 5020 Dec 10 18:43 prefs.js -rw------- 1 user user 16384 Dec 10 18:42 secmod.db -rw------- 1 user user 53 Dec 10 18:43 sessionCheckpoints.json drwxr-xr-x 2 user user 4096 Dec 10 18:42 startupCache drwx------ 2 user user 4096 Dec 10 18:43 userumbnails -rw-r--r-- 1 user user 3504 Dec 10 18:42 user.js drwxr-xr-x 2 user user 4096 Dec 10 18:42 webapps drwxr-xr-x 2 user user 4096 Dec 10 18:42 x86 

¿Qué podría hacer para deshacerme de este error?

EDITAR: También he configurado una pantalla virtual para permitir el lanzamiento de Firefox. Este código se ejecuta antes que el navegador.

 from pyvirtualdisplay import Display display = Display(visible=0, size=(640, 480)) display.start() 

Creo que esta parte está bien porque antes de agregar estas líneas, Selenium dio un error sobre la falta de visualización. Con este código, Firefox se inicia al menos lo suficiente como para crear algunos archivos de perfil.

También Firefox se inicia cuando lo hago:

 Xvfb :99 export DISPLAY=:99 firefox (Firefox just sits there, but does not give errors.) 

EDIT2: También intenté usar Chromium lugar de Firefox pero eso no funcionó porque su controlador de web para Selenium no funciona con Raspbian .

Al final, resolví mi problema usando PhantomJS lugar de Selenium .

No había un binario oficial para Raspberry Pi y, por lo tanto, era muy lento, así que utilicé este binario de Github : https://github.com/piksel/phantomjs-raspberrypi/

Selenium literalmente lanza una instancia de firefox.

Cuando ejecutas Firefox directamente desde la terminal, ¿qué pasa? Como dijiste, este es un servidor sin cabeza, me imagino que no se inicia.

Para que funcione el selenium, debes poder ejecutar Firefox desde la terminal, sin error. Luego, una vez que puedes hacer eso, puedes lanzarlo desde selenium.

Dependiendo de su caso de uso, las solicitudes de python pueden ser una mejor opción

Recuerda que Firefox necesita una PANTALLA para funcionar