50 votes

WebDriverException: Message: argument non valide: impossible de tuer un processus terminé avec GeckoDriver, Selenium et Python sur RaspberryPi3

Serveur: Raspberry Pi 3 Système d'exploitation: Dietpi - version 159 Version Geckodriver: 0,22 pour le bras Version de Firefox: 52.9.0 Version Python: 3.5 Version sélénium: 3.14.1

Gecko est exécutable et se trouve dans / 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')
...
...

Production:

 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

Une idée de ce qui ne va pas? J'ai essayé google sans chance.

78voto

NFern Points 1285

Si vous exécutez Firefox sur un système sans écran, assurez-vous d'utiliser le mode sans tête.

 from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)

Assurez-vous également que vous disposez de versions compatibles de Firefox, Selenium et Geckodriver: https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html

10voto

Rogelio Points 997

J'étais en mode sans tête, en utilisant des versions correctes de tout, et le seul moyen de sortir de ce message d'erreur était de ne pas exécuter le test de sélénium en tant que root

7voto

conde Points 160

Oui coché Démarrez Xvfb avant que la construction ne puisse résoudre le problème, mais si vous avez un travail comme un pipeline ou un pipeline multibranch, cette option n'est pas visible. Dans le nœud de votre grille Selenium que vous allez exécuter le test dont vous avez besoin:

1- Installer Xvfb: apt install xvfb

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

3- Réexécutez votre nœud, par exemple: java -jar selenium.jar -role node -hub http://#.#.#.#:4444/grid/register -capabilities browserName=firefox,plataform=linux -host #.#.#.# -port 1991

6voto

Anar Salimkhanov Points 343

Cette solution a fonctionné pour moi

 from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X