我在 python 多執行緒環境中使用 Selenium 和 ChromeDriver。在多處理開始之前,每個瀏覽器實體都已設定。可以毫無問題地啟動 17 個瀏覽器,但如果超過 17 個實體,它就會失敗。
以下是瀏覽器的日志輸出webdriver.Chrome(service_log_path=self.session_logfile):
作業實體(實體#17):
[…]
[1640642658.135][INFO]: [d95aa29866064789c167e42c4911ed36] RESPONSE SetTimeouts
[1640642658.136][INFO]: [d95aa29866064789c167e42c4911ed36] COMMAND Navigate {
"url": "https://www.website.com"
}
[1640642658.136][INFO]: Waiting for pending navigations...
[1640642658.137][INFO]: Done waiting for pending navigations. Status: ok
[1640642658.417][INFO]: Waiting for pending navigations...
[1640642659.122][INFO]: Done waiting for pending navigations. Status: ok
[1640642659.122][INFO]: [d95aa29866064789c167e42c4911ed36] RESPONSE Navigate
[1640642659.127][INFO]: [d95aa29866064789c167e42c4911ed36] COMMAND DeleteAllCookies {
}
[1640642659.127][INFO]: Waiting for pending navigations...
[1640642659.128][INFO]: Done waiting for pending navigations. Status: ok
[…]
失敗的實體(實體 #18):
[…]
[1640642194.176][INFO]: [9148f58db0e76ea70186f0739b04e677] RESPONSE SetTimeouts
[1640642194.176][INFO]: [9148f58db0e76ea70186f0739b04e677] COMMAND Navigate {
"url": "https://www.website.com"
}
[1640642194.176][INFO]: Waiting for pending navigations...
[1640642194.178][INFO]: Done waiting for pending navigations. Status: ok
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00
[1640642194.122][INFO]: [330dd18a9973da505814eddae0cfd97d] COMMAND QuitAll {
}
[1640642194.172][INFO]: [330dd18a9973da505814eddae0cfd97d] RESPONSE QuitAll
- 問題不在于多執行緒,因為我在使用并行行程之前按順序啟動實體。
- 機器有更多的資源,所以它不是關于 CPU 或記憶體的限制。
- 在另一臺機器上,我可以毫無問題地運行 30 個實體。
我試過除錯它,但不明白為什么會發生。如何檢索有關此實體失敗/退出原因的更多資訊?
uj5u.com熱心網友回復:
如果您打算使用多執行緒進行 Python 測驗,您可以考慮使用“pytest-xdist”來為您處理多個行程:https : //github.com/pytest-dev/pytest-xdist。如果您將 Selenium 與 Python 和 pytest 結合使用,則有一個框架可以為您簡化 Selenium 測驗多執行緒,“SeleniumBase”:https : //github.com/seleniumbase/SeleniumBase。它用作 pytest 插件,因此您可以使用 pytest-xdist 提供的 pytest 多執行緒引數,并根據需要多執行緒運行所有 Selenium Python 測驗。例如:pytest -n 20對于 20 個并行執行緒,假設您的機器有足夠的記憶體。如果您的機器沒有足夠的記憶體,那么肯定使用更少的執行緒。啟動大量瀏覽器視窗可能會占用大量記憶體。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/397397.html
標籤:蟒蛇-3.x 硒 硒网络驱动程序 chrome-web 驱动程序
