我有一個在另一個 python 程式中執行的 selenium 腳本。該程式僅在我使用 ssh 以 root 身份登錄服務器但不能由 www-data 用戶執行時執行,因為它回傳錯誤:
selenium.common.exceptions.WebDriverException: Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: 1
我使用以下命令運行腳本:
os.system('python3 /var/website/webscraping.py' str(VARIABLE))
任何幫助將不勝感激!
uj5u.com熱心網友回復:
理想情況下,您應該能夠以www-data用戶身份執行該程式。但是,此錯誤訊息...
selenium.common.exceptions.WebDriverException: Message: Service /usr/bin/chromedriver unexpectedly exited. Status code was: 1
...表示ChromeDriver意外退出。
拇指規則
Chrome 在啟動期間崩潰的一個常見原因是在 Linux 上以
root用戶 (administrator)身份運行 Chrome 。雖然可以通過--no-sandbox在創建 WebDriver 會話時傳遞標志來解決此問題,但這種配置不受支持且不鼓勵使用。您需要將環境配置為以普通用戶身份運行 Chrome。
此錯誤背后可能有多種原因。您的代碼試驗和完整的錯誤堆疊跟蹤將使我們對幕后發生的錯誤有了更多的了解。
但是,有幾個補救步驟如下:
確保Chrome已更新為當前chrome=96.0.4664.45(根據chrome=96.0.4664.45 發行說明)。
確保ChromeDriver更新到當前的ChromeDriver v96.0級別。
確保您已從與您的底層作業系統相關的下載位置下載了正確格式的ChromeDriver二進制檔案,其中包括:
- chromedriver_win32:適用于Windows 作業系統
- chromedriver_mac64 : 適用于MAC OS X
- chromedriver_linux64:適用于Linux 作業系統
使用Selenium,您需要通過引數executable_path傳遞ChromeDriver二進制檔案的絕對路徑,并且您需要在單引號(即)中提及由單個正斜杠(即)分隔的路徑以及原始開關(即),如下所示:
''\rfrom selenium import webdriver driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver') driver.get(url)確保ChromeDriver二進制檔案對非管理員 用戶具有可執行權限。
以非管理員 用戶身份執行您的測驗。
對于錯誤的另一個潛在原因可能是由于缺少條目
127.0.0.1 localhost中/etc/hostsWindows 作業系統- 添加
127.0.0.1 localhost到/etc/hostsMac OSX - 確保以下條目:
127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost fe80::1%lo0 localhost
參考
根據selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service geckodriver 中的討論:
- Selenium 不需要
127.0.0.1 localhost在主機檔案中顯式設定。 - 但是,必須將localhost映射到IPv4 本地環回 (127.0.0.1)
- 這種映射的機制不必總是通過主機檔案。
- 在Windows 作業系統上,它根本沒有映射到 hosts 檔案中(決議 localhost 是由 DNS 決議器完成的)。
TL;博士
如何將 Hosts 檔案重置為默認值
更新
根據您的評論更新:
chromedriver 是 97 版,google-chrome 是 96 版
您的主要問題似乎是您使用的二進制檔案版本之間的不兼容chromedriver=97.0和chrome=96.0.4664.45之間存在明顯不匹配
解決方案
確保這件事:
- ChromeDriver已更新到當前的ChromeDriver v96.0級別。
- Chrome已更新為當前chrome=96.0.4664.45(根據chrome=96.0.4664.45 發行說明)。
您可以在WebDriverException 中找到相關的詳細討論:訊息:未知錯誤:Chrome 無法啟動:例外退出。”(驅動程式資訊:chromedriver=97)使用 Selenium Python
uj5u.com熱心網友回復:
看起來您的瀏覽器版本與您在路徑中提供的瀏覽器二進制檔案不匹配。您能否實作一個 WebDriverManager 并查看它是否能解決您的問題?更多資訊如下-> https://cpsat.agiletestingalliance.org/2021/03/25/selenium-webdriver-manager-in-python/
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406965.html
標籤:
