簡體   English   中英

強制Docker容器中的SeleniumHQ關閉所有瀏覽器會話

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM