lanzar selenium desde python en ubuntu

Tengo el siguiente guion

from selenium import webdriver browser = webdriver.Firefox() browser.get('http://localhost:8000') assert 'Django' in browser.title 

Obtuve el siguiente error

 $ python3 functional_tests.py Traceback (most recent call last): File "functional_tests.py", line 3, in  browser = webdriver.Firefox() File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", line 80, in __init__ self.binary, timeout) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 52, in __init__ self.binary.launch_browser(self.profile, timeout=timeout) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser self._wait_until_connectable(timeout=timeout) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 99, in _wait_until_connectable "The browser appears to have exited " selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details. 

pip3 list muestra selenium (2.53.6) .

firefox -v muestra Mozilla Firefox 47.0 .

La última versión de Firefox no funciona correctamente con selenium. Probar con 46 o 45.

Se puede descargar aquí: http://ftp.mozilla.org/pub/firefox/releases

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

También puedes hacer esto gráficamente como se muestra aquí http://www.howtogeek.com/117929/how-to-downgrade-packages-on-ubuntu/

También tuve problemas con este problema y no estaba contento con el uso de versiones anteriores de Firefox. Aquí está mi solución que utiliza la última versión de Firefox. Sin embargo, implica varios pasos.

Paso 1. Descargue v0.9.0 Marionette , la próxima generación de FirefoxDriver, desde esta ubicación: https://github.com/mozilla/geckodriver/releases/download/v0.9.0/geckodriver-v0.9.0-linux64.tar.gz

Paso 2. Extraiga el archivo a la carpeta deseada y cámbiele el nombre a “alambres”. En mi caso, creé una carpeta llamada “add_to_system_path” en Documentos. Por lo tanto, el archivo está en Documentos / add_to_system_path / wires (también asegúrese de que el archivo de Wire sea ejecutable bajo sus propiedades)

Paso 3. Crea un archivo llamado “.pam_environment” debajo de tu carpeta de inicio y luego agrega esta línea en él y guarda

PATH DEFAULT=${PATH}:/absolute/path/to/the/folder/where/wires/is/saved

Lo que esto hace es que le dice a ubuntu que agregue el directorio enumerado en .pam_environment a la ruta de su sistema

Paso 4. Guarde el archivo, cierre sesión en su sesión de usuario y vuelva a iniciar sesión. Esto es necesario para que ubuntu reconozca los archivos en la nueva ruta del sistema agregada.

Paso 5. Usa el siguiente código para crear una instancia de la instancia del navegador:

 ` from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities capabilities = DesiredCapabilities.FIREFOX capabilities["marionette"] = True browser = webdriver.Firefox(capabilities=capabilities) browser.get('http://your-target-url')` 

Firefox ahora debería ser capaz de instanciar como de costumbre.