You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Grid:如何保持会话直至手动关闭,防止测试失败后自动消失

解决Selenium Grid会话自动消失的配置方案

一、修改Docker Compose配置

通过添加环境变量调整Selenium服务端的会话行为,让会话保持活跃直到手动关闭或超时:

services:
  selenium:
    image: selenium/standalone-chrome:latest
    shm_size: '2gb'
    ports:
      - "4444:4444"
      - "7900:7900"
    environment:
      # 设置会话超时时间为1天(86400秒),可按需调整时长
      - SE_SESSION_TIMEOUT=86400
      # 开启会话保持模式,测试结束后不立即销毁浏览器实例
      - SE_STAY_ALIVE=true

配置说明:

  • SE_SESSION_TIMEOUT:定义会话无操作后的最大存活时间,设置足够大的值能保证你有充足时间排查问题。
  • SE_STAY_ALIVE=true:启用后,Selenium节点不会在测试会话结束后立刻关闭浏览器,而是维持会话状态直到超时或手动通过VNC(http://localhost:7900)关闭。

二、测试代码调整(可选)

如果你的测试代码中主动调用了driver.quit(),即使服务端配置了会话保持,浏览器也会被关闭。可以在测试框架中控制,仅在测试通过时关闭driver:

以pytest为例,修改fixture逻辑:

import pytest
from selenium import webdriver

@pytest.fixture(scope="function")
def driver():
    driver = webdriver.Remote(
        command_executor='http://localhost:4444/wd/hub',
        desired_capabilities={'browserName': 'chrome'}
    )
    yield driver
    # 仅当测试通过时关闭浏览器,失败时保留会话
    test_result = pytest.current_test_result
    if test_result and test_result.outcome != 'failed':
        driver.quit()

内容的提问来源于stack exchange,提问作者eastwater

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 07:10:23