it-swarm.com.de

WebDriverException: Nachricht: ungültiges Argument: Mit GeckoDriver, Selenium und Python auf RaspberryPi3 kann ein beendeter Prozess nicht beendet werden

Server: Himbeer-Pi 3
Betriebssystem: Dietpi - Version 159
Geckodriver-Version: 0,22 für den Arm
Firefox-Version: 52.9.0
Python-Version: 3.5
Selenversion: 3.14.1 

Gecko ist ausführbar und befindet sich in/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')
...
...

Ausgabe:

[email protected]:~# 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

Irgendeine Idee, was ist los? Ich habe Google ohne Glück versucht.

6
Chokoladekiks

Diese Fehlermeldung ...

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

... impliziert, dass der GeckoDriver keine neue WebBrowsing-Sitzung initiieren/erzeugen konnte, d. h. Firefox Browser - Sitzung.

Ihr Hauptproblem ist die Inkompatibilität zwischen der verwendeten Version der Binärdateien:

  • Ihre GeckoDriver-Version ist 0.22.0.
  • In den Release Notes von GeckoDriver v0.21.0 (2018-06-15)} wird Folgendes eindeutig erwähnt:

    • Firefox 57 (und höher)

    • Selen 3.11 (und höher)

  • Ihre Firefox-Version ist 52.9.0.

Es besteht also ein eindeutiges Missverhältnis zwischen GeckoDriver v0.22.0 und dem Firefox Browser v57

Lösung

  • Aktualisieren Sie GeckoDriver auf GeckoDriver v0.22.0 level.
  • GeckoDriver ist am angegebenen Ort vorhanden.
  • GeckoDriver verfügt über eine ausführbare Berechtigung für Benutzer ohne Rootberechtigung.
  • Aktualisieren Sie Firefox -Version auf Firefox v62.0.2.
  • Bereinigen Ihr Projektarbeitsbereich durch Ihre IDE und Rebuild Ihr Projekt mit nur erforderlichen Abhängigkeiten.
  • Wenn Ihre Basisversion Web Client zu alt ist, deinstallieren Sie sie über Revo Uninstaller und installieren Sie eine aktuelle GA und eine veröffentlichte Version von Web Client).
  • Führen Sie Ihre Test als Benutzer ohne Rootberechtigung aus.
9
DebanjanB

Ich war im Headless-Modus und habe die korrekten Versionen von allem verwendet. Die einzige Möglichkeit, aus dieser Fehlermeldung herauszukommen, war nicht, um den Selenium-Test als Root auszuführen

6
Rogelio

Wenn Sie Firefox auf einem System ohne Anzeige ausführen, stellen Sie sicher, dass Sie den Headless-Modus verwenden.

from Selenium import webdriver
from Selenium.webdriver.firefox.options import Options

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

Stellen Sie außerdem sicher, dass Sie über kompatible Versionen von Firefox, Selenium und Geckodriver verfügen: https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/Support.html

3
NFern

Ja markiert Starten Sie Xvfb, bevor der Build das Problem beheben kann. Wenn Sie jedoch einen Job wie eine Pipeline oder eine Multibank-Pipeline haben, ist diese Option nicht sichtbar. In dem Knoten Ihres Selenium-Gitters, den Sie ausführen, um den Test auszuführen, den Sie benötigen:

1- Installieren Sie Xvfb: apt install xvfb

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

3- Führen Sie Ihren Knoten erneut aus, zum Beispiel: Java -jar Selenium.jar -role node -hub http://#.#.#.#:4444/grid/register -capabilities browserName=firefox,plataform=linux -Host #.#.#.# -port 1991

3
conde

Ich benutzte:

  • VS-Code
  • Linunx/Ubuntu: 18.10
  • Nightwatch.js

Mein Problem war, dass ich versucht habe, Nightwatch (das GeckoDriver automatisch startet) auszuführen von das VS Code-Terminal.

1
flow3r

Ich konnte dies durch Ausführen meiner Tests mit Xvfb beheben. Ich habe sie auf einem Remote-Server ausgeführt.

Ich habe Jenkins benutzt, also habe ich das Kästchen angekreuzt, das so aussah:

 Credit to https://www.obeythetestinggoat.com/book/chapter_CI.html

Gutschrift an https://www.obeythetestinggoat.com/book/chapter_CI.html

0
Daniel Butler