Selenium se estrella con selenium.common.exceptions.WebDriverException: Mensaje: newSession

SO: Ubuntu 16.04.3 LTS (GNU / Linux 4.4.0-1066-aws x86_64)

Versión de selenium: selenium == 3.6.0

Navegador: Mozilla Firefox 63.0

Versión de Geckodriver: geckodriver-v0.19.0-linux64

Comportamiento esperado –

Cree un nuevo navegador Firefox y realice algunos pasos: analizar el sitio web.

Comportamiento actual –

Chocando con un registro: –

self.driver = webdriver.Firefox() File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 154, in __init__ keep_alive=True) File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 151, in __init__ self.start_session(desired_capabilities, browser_profile) File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 240, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 308, in execute self.error_handler.check_response(response) File "/home/ubuntu/env/local/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: newSession 

¿Alguien ha enfrentado este problema antes y tiene una posible solución?

ACTUALIZACIÓN: geckodriver --log trace & curl -d '{}' 127.0.0.1:4444/session el siguiente comando: geckodriver --log trace & curl -d '{}' 127.0.0.1:4444/session

Registro: – https://pastebin.com/TirTNKrG

Solucioné el problema actualizando el paquete python de selenium y utilizando el último geckodriver.

Gracias @fzbd por toda tu ayuda.

Gracias @skyfail. Tu respuesta me ayudó. Se realizó la siguiente secuencia y se resolvió el problema.

  1. Para actualizar selenium run: sudo pip3 install selenium --upgrade

  2. Para actualizar geckodriver sigue los pasos 1-3 de este

  3. mv geckodriver /usr/bin/

En su registro se encuentra la siguiente línea:

1540501901605 geckodriver ERROR Dirección en uso (error 98)

Lo que indica que el controlador está intentando usar un puerto que ya está siendo usado por algún otro proceso. Dado que el registro no muestra qué puerto es, puede ejecutar el controlador con strace :

 strace geckodriver 2>&1 | grep -iE 'bind|getsockname' 

En mi caso obtengo estas lineas:

bind (3, {sa_family = AF_INET, sin_port = htons (4444), sin_addr = inet_addr (“127.0.0.1”)}, 16) = 0

getsockname (3, {sa_family = AF_INET, sin_port = htons (4444), sin_addr = inet_addr (“127.0.0.1”)}, [128-> 16]) = 0

Luego puede verificar qué proceso está usando el puerto (por ejemplo):

 netstat -tulpn | grep -i 4444 

En mi caso volviendo:

tcp 0 0 127.0.0.1:4444 0.0.0.0:* ESCUCHAR 31471 / geckodriver

De acuerdo con un problema sobre el registro de puertos de geckodriver , puede permitir que el sistema operativo asigne un puerto libre:

 geckodriver --port 0 

Si todo esto no funciona, puede haber una incompatibilidad entre su versión de geckodriver y selenium, como parece sugerir este error en el registro:

geckodriver :: marionette TRACE <- [1,1, {"error": "comando desconocido", "mensaje": "newSession", "stacktrace": "WebDriverError @ chrome: //marionette/content/error.js: 178 : 5

Estoy usando las siguientes versiones:

  • Firefox 62.0.3
  • geckodriver 0.23.0
  • selenium 3.14.1