對于一些測驗,我設定了一個全新的 TrueNAS 12.3 FreeBSD Jail 并啟動它,然后安裝,python3并使用以下命令:firefoxgeckodriverpip
pkg install python3 firefox geckodriver py38-pip
pip install --upgrade pip
setenv CRYPTOGRAPHY_DONT_BUILD_RUST 1
pip install cryptography==3.4.7
pip install selenium
之后,當我想在我的 Python 代碼中使用 Selenium 和 Firefox 時,它不起作用:
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
options = Options()
options.headless = True
driver = webdriver.Firefox(options=options)
帶來
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
self.service.start()
File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 98, in start
self.assert_process_still_running()
File "/usr/local/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 110, in assert_process_still_running
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 64
有趣的是,在我大約一年前設定的另一個監獄中(大約也以上述方式),它可以正常作業并且不會拋出錯誤(所以可能是不同的版本?)!
這是唯一的內容geckodriver.log:
geckodriver: error: Found argument '--websocket-port' which wasn't expected, orisn't valid in this context
USAGE:
geckodriver [FLAGS] [OPTIONS]
For more information try --help
有什么我可以嘗試讓它作業的嗎?我已經看過這個問題,但它似乎已經過時了。
Firefox 95.0.2、geckodriver 0.26.0、Python 3.8.12、Selenium 4.1.0
uj5u.com熱心網友回復:
此錯誤訊息...
selenium.common.exceptions.WebDriverException: Message: Service geckodriver unexpectedly exited. Status code was: 64
和GeckoDriver日志...
geckodriver: error: Found argument '--websocket-port' which wasn't expected, orisn't valid in this context
...暗示GeckoDriver無法啟動/產生新的瀏覽背景關系,即火狐 會議。
您的主要問題是您使用的二進制檔案版本之間的不兼容,如下所示:
- 您的Selenium 客戶端版本是4.1.0。
- 但是您的GeckoDriver版本是0.26.0。
正如他們在評論@ernstki中提到的:
您正在運行早于 0.30.0 的 geckodriver,它缺少
--websocket-port選項,Selenium 的較新/新版本似乎依賴于該選項。
簡而言之,在之前的GeckoDriver v0.29.0版本之前,該選項未使用,現在Selenium v??4.0.1強制使用該選項。--websocket-port
在他的評論中也進一步@whimboo證實:
正如已經證明的那樣,這里的問題不是 geckodriver 而是 Selenium。因此,您應該在 Selenium 存盤庫上創建一個問題,以便可以添加一個選項以不總是傳遞 --websocket-port 引數。如果該請求被拒絕,如果確實需要使用較舊的 geckodriver 版本進行測驗,您將不得不使用較舊的 Selenium 版本。
解決方案
確保這件事:
- Selenium升級到當前級別Version 4.1.0。
- GeckoDriver升級到GeckoDriver v0.30.0級別。
- Firefox升級到當前的Firefox v96.0.2級別。
FreeBSD 版本
如果您使用的是GeckoDriver版本較舊的 FreeBSD 版本,那么您必須將Selenium降級到v3.x級別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/419677.html
標籤:
