WebDriverException: Mensaje: argumento no válido: no se puede matar un proceso salido con GeckoDriver, Selenium y Python en RaspberryPi3

Servidor: Raspberry Pi 3
OS: Dietpi – versión 159
Versión Geckodriver: 0.22 para arm
Versión de Firefox: 52.9.0
Versión de Python: 3.5
Versión de selenium: 3.14.1

Gecko es ejecutable y se encuentra en / usr / local / bin /

from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.firefox.options import Options import time options = Options() options.set_headless(headless=True) driver = webdriver.Firefox(firefox_options=options) print('Need your login credential') username = input('What is your username?:\n') password = input('What is your password?:\n') ... ... 

Salida:

 root@RPi3:~# python3.5 ITE-bot.py Traceback (most recent call last): File "ITE-bot.py", line 12, in  driver = webdriver.Firefox(firefox_options=options) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__ keep_alive=True) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/usr/local/lib/python3.5/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process 

¿Alguna idea de lo que está mal? He intentado google sin suerte.

Este mensaje de error …

 selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process 

… implica que el GeckoDriver no pudo iniciar / generar una nueva sesión de WebBrowsing, es decir, una sesión del navegador Firefox .

Su principal problema es la incompatibilidad entre la versión de los binarios que está utilizando de la siguiente manera:

  • Su versión de GeckoDriver es 0.22.0 .
  • Las Notas de la versión de GeckoDriver v0.21.0 (2018-06-15) mencionan claramente lo siguiente:

    • Firefox 57 (y mayor)

    • Selenio 3.11 (y mayor)

  • Su versión de Firefox es 52.9.0 .

Así que hay una clara falta de coincidencia entre GeckoDriver v0.22.0 y el navegador Firefox v57

Solución

  • Actualice GeckoDriver al nivel GeckoDriver v0.22.0 .
  • GeckoDriver está presente en la ubicación especificada.
  • GeckoDriver tiene permiso ejecutable para usuarios no root.
  • Actualiza la versión de Firefox a los niveles de Firefox v62.0.2 .
  • Limpie su Área de trabajo del proyecto a través de su IDE y Reconstruya su proyecto solo con las dependencias requeridas.
  • Si la versión básica de su cliente web es demasiado antigua, desinstálela a través de Revo Uninstaller e instale un GA reciente y una versión de lanzamiento del cliente web .
  • Ejecute su Test como un usuario no root.

Si está ejecutando Firefox en un sistema sin pantalla, asegúrese de usar el modo sin cabeza.

 from selenium import webdriver from selenium.webdriver.firefox.options import Options options = Options() options.headless = True driver = webdriver.Firefox(options=options) 

Además, asegúrese de tener versiones compatibles de Firefox, Selenium y Geckodriver: https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/Support.html

Sí marcada. Inicie Xvfb antes de que la comstackción pueda solucionar el problema, pero si tiene un trabajo como una canalización o una red de múltiples ramificaciones, esta opción no estará visible. En el nodo de su cuadrícula de Selenium que va a ejecutar la prueba que necesita:

1- Instalar Xvfb: apt install xvfb

2- Ejecutar Xvfb: /usr/bin/Xvfb :99 -ac -screen 0 1024x768x8 & export DISPLAY=":99"

3- java -jar selenium.jar -role node -hub http://#.#.#.#:4444/grid/register -capabilities browserName=firefox,plataform=linux -host #.#.#.# -port 1991 su nodo, por ejemplo: java -jar selenium.jar -role node -hub http://#.#.#.#:4444/grid/register -capabilities browserName=firefox,plataform=linux -host #.#.#.# -port 1991

Pude arreglar esto ejecutando mis pruebas con Xvfb. Los estaba ejecutando en un servidor remoto.

Estaba usando Jenkins, así que marqué la casilla que tenía este aspecto:

Crédito a https://www.obeythetestinggoat.com/book/chapter_CI.html

Crédito a https://www.obeythetestinggoat.com/book/chapter_CI.html