サーバー:Raspberry Pi 3
OS:Dietpi-バージョン159
Geckodriverバージョン:腕用0.22
Firefoxバージョン:52.9.0
Pythonバージョン:3.5
セレンバージョン:3.14.1
Geckoは実行可能で、/ 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')
...
...
出力:
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
何が間違っているのでしょうか?私は運なしでグーグルを試しました。
このエラーメッセージ...
Selenium.common.exceptions.WebDriverException: Message: invalid argument: can't kill an exited process
...GeckoDriverが新しいWebBrowsing SessionすなわちFirefox Browserセッションを開始/生成できなかったことを意味します。
あなたの主な問題は、次のように、使用しているバイナリのバージョン間のincompatibilityです。
GeckoDriver v0.21.0(2018-06-15)のリリースノートには、次のことが明記されています。
Firefox 57(以降)
Selenium 3.11(以降)
Firefoxバージョンは52.9.です。
そのため、GeckoDriver v0.22.0とFirefox Browser v57との間には明らかな不一致があります
ディスプレイのないシステムでFirefoxを実行している場合は、ヘッドレスモードを使用してください。
from Selenium import webdriver
from Selenium.webdriver.firefox.options import Options
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)
また、Firefox、Selenium、およびGeckodriverの互換バージョンがあることを確認してください。 https://firefox-source-docs.mozilla.org/testing/geckodriver/Support.html
私はすべての正しいバージョンを使用してヘッドレスモードで、このエラーメッセージから抜け出す唯一の方法は、ルートとしてSeleniumテストを実行することでしたnot
[はい]チェックボックスをオンにすると、ビルドで問題を修正する前にXvfbを開始できますが、パイプラインまたはマルチブランチパイプラインのようなジョブがある場合、このオプションは表示されません。必要なテストを実行するために行くSeleniumグリッドのノードで:
1- Xvfbのインストール:apt install xvfb
2- 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
私が使用した:
.
Xvfbでテストを実行することでこれを修正できました。リモートサーバーで実行していました。
私はJenkinsを使用していたので、次のようなボックスをチェックしました。
https://www.obeythetestinggoat.com/book/chapter_CI.html へのクレジット