Serveur: Raspberry Pi 3
OS: Dietpi - version 159
Version Geckodriver: 0.22 pour le bras
Version de Firefox: 52.9.0
Version Python: 3.5
Sélénium version: 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')
...
...
Sortie:
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.
Ce message d'erreur ...
Selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process
... implique que GeckoDriver n’a pas pu lancer/créer une nouvelle session WebBrowsing, c’est-à-dire Navigateur Firefox.
Votre problème principal est le incompatibility entre la version des fichiers binaires que vous utilisez comme suit:
Les notes de publication de GeckoDriver v0.21.0 (2018-06-15) mentionnent clairement les éléments suivants:
Firefox 57 (et supérieur)
Sélénium 3.11 (et plus)
Votre version Firefox est 52.9.0.
Il y a donc un décalage évident entre GeckoDriver v0.22.0 et le navigateur Firefox v57
Test
en tant qu’utilisateur non root.Si vous utilisez Firefox sur un système sans affichage, 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)
Vérifiez également que vous disposez de versions compatibles de Firefox, Selenium et Geckodriver: https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/Support.html
Oui cocher Démarrer Xvfb avant la compilation peut résoudre le problème, mais si vous avez un travail comme un pipeline ou un pipeline multibranche, cette option n'est pas visible. Dans le nœud de votre grille de sélénium que vous allez exécuter le test dont vous avez besoin:
1- Installez Xvfb: apt install xvfb
2- Exécuter Xvfb: /usr/bin/Xvfb :99 -ac -screen 0 1024x768x8 & export DISPLAY=":99"
3- Relancez votre noeud, par exemple: Java -jar Selenium.jar -role node -hub http://#.#.#.#:4444/grid/register -capabilities browserName=firefox,plataform=linux -Host #.#.#.# -port 1991
J'ai pu résoudre ce problème en exécutant mes tests avec Xvfb. Je les exécutais sur un serveur distant.
J'utilisais Jenkins alors j'ai coché la case qui ressemblait à ceci:
Crédit à https://www.obeythetestinggoat.com/book/chapter_CI.html