我在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我编写python3.x脚本来连接selenium。通常的例程如下。但有时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()发布于 2019-02-09 09:17:56
你可以使用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(),但这并不意味着浏览器真的会关闭。
https://stackoverflow.com/questions/54588879
复制相似问题