[英]Force SeleniumHQ in docker container to close all browser sessions
我在docker容器中運行selenium hub
以測試網站。 我的Dockerfile
的相關部分是:
#https://github.com/SeleniumHQ/docker-selenium
version: '3'
services:
selenium-hub:
image: selenium/hub:3.141.59-dubnium
environment:
- GRID_MAX_SESSION=15
- GRID_TIMEOUT=180000
- GRID_BROWSER_TIMEOUT=180000
networks:
- selenium-hub
chrome:
image: selenium/node-chrome:3.141.59-dubnium
shm_size: 512MB
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- NODE_MAX_INSTANCES=5
- NODE_MAX_SESSION=6
- HUB_HOST=selenium-hub
- HUB_PORT=4444
- DBUS_SESSION_BUS_ADDRESS=/dev/null
networks:
- selenium-hub
我寫了python 3.x腳本來連接到硒。 通常的例程如下。 但是有時driver
變量會由於外部錯誤而丟失。 在這種情況下,Selenium網格保存了我已經失去控制的待處理瀏覽器會話。 是否可以強制Selenium hub
一次關閉所有瀏覽器會話? 我該如何在python
呢?
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
cap = DesiredCapabilities.CHROME
driver = webdriver.Remote(command_executor='http://selenium-hub:4444/wd/hub',desired_capabilities=cap)
##
# commands to browser
##
driver.quit()
您可以使用try / finally結構代碼:
driver = webdriver.Remote(command_executor='http://selenium-hub:4444/wd/hub', desired_capabilities=cap)
try:
##
# commands to browser
##
finally:
driver.quit()
或將您的驅動程序創建為上下文管理器:
with webdriver.Remote(command_executor='http://selenium-hub:4444/wd/hub', desired_capabilities=cap) as driver:
##
# commands to browser
##
...兩者都將始終在您的驅動程序實例上調用quit()
。
注意:即使這些將無條件調用quit()
,也不一定意味着瀏覽器實際上會關閉。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.