python selenium firefox raspberry-pi3 geckodriver

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



firefox raspberry-pi3 (6)

Servidor: Raspberry Pi 3
OS: Dietpi - versión 159
Versión Geckodriver: 0.22 para brazo
Versión de Firefox: 52.9.0
Versión de Python: 3.5
Versión de selenio: 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 <module> 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.


Estaba en modo sin cabeza, usando versiones correctas de todo, y la única manera de salir de este mensaje de error era no ejecutar la prueba de selenio como root


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 .
  • Actualizar 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 prueba de Selenium como usuario no root .


Sí marcada. Inicie Xvfb antes de que la compilació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


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


Solía:

  • Código VS
  • Linunx / Ubuntu: 18.10
  • Nightwatch.js

Mi problema fue que intenté ejecutar Nightwatch (que automáticamente inicia GeckoDriver) desde el terminal de VS Code.