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 .
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
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.