我啟動了一個 Docker 容器:
docker run -d --shm-size="4g" --hostname selenium_firefox selenium/standalone-firefox
在另一個裝有 Python 的容器中:
...
>>> driver = webdriver.Remote(command_executor="http://" selenium_host ":4444/w
d/hub", desired_capabilities=DesiredCapabilities.FIREFOX, keep_alive=True)
>>> driver.title
''
>>> driver.title
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/remote/webdri
ver.py", line 447, in title
resp = self.execute(Command.GET_TITLE)
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/remote/webdri
ver.py", line 424, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.10/site-packages/selenium/webdriver/remote/errorh
andler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Unable to execute reques
t for an existing session: Unable to find session with ID: 5c619451-8361-4ec9-9b
7e-58b7afac15ff
Build info: version: '4.1.1', revision: 'e8fcc2cecf'
System info: host: 'selenium_firefox', ip: '172.17.0.3', os.name: 'Linux', os.ar
ch: 'amd64', os.version: '5.4.0-89-generic', java.version: '11.0.13'
Driver info: driver.version: unknown
第一次driver.title我在創建遠程 webdriver 后立即運行它。
然后等了一段時間(大概15分鐘左右),又跑driver.title了,Python控制臺好像已經失去了與對應瀏覽器的連接。
為什么會發生這種情況,我該如何避免?如果我不使用遠程網路驅動程式,它就不會發生。
uj5u.com熱心網友回復:
選項 1:覆寫 Docker Selenium Grid 默認會話超時
來自 docker/selenium 檔案:
Grid 的默認會話超時時間為 300 秒,其中會話可以處于陳舊狀態,直到它被終止。您可以使用 SE_NODE_SESSION_TIMEOUT 以秒為單位覆寫該值。
docker run -d -e SE_NODE_SESSION_TIMEOUT=1000 --shm-size="4g" --hostname selenium_firefox selenium/standalone-firefox
選項 2:每 60 秒(任何 < 300)秒 ping 一次您的會話
您可以在空閑時間回圈執行一些驅動程式命令
for x in range(15):
time.sleep(60)
driver.current_url
參考
https://github.com/SeleniumHQ/docker-selenium#grid-url-and-session-timeout
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417978.html
標籤:
