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

使用Test Container运行Selenium测试失败问题排查

解决TestContainers+Selenide设置WebDriver导致Chrome崩溃的问题

在Docker环境下使用TestContainers运行Selenium测试时,调用WebDriverRunner.setWebDriver(browser.getWebDriver())会触发Chrome启动失败,报错SessionNotCreatedException: Could not start a new session,但移除该行代码后测试可正常运行,且已确认TestContainers容器已成功启动。

核心原因

Selenide自带WebDriver实例管理逻辑,直接将TestContainers返回的RemoteWebDriver实例强制设置给WebDriverRunner,会打乱Selenide内部的初始化流程,引发Chrome进程启动冲突,最终导致崩溃。

修复步骤

1. 用Selenide远程配置替代直接设置WebDriver

放弃WebDriverRunner.setWebDriver()调用,通过Selenide的Configuration类指定TestContainers提供的Selenium远程地址,让Selenide自行创建适配的WebDriver实例:

public class ChromeExtension implements BeforeEachCallback {

    private BrowserWebDriverContainer browser;

    @Override
    public void beforeEach(ExtensionContext context) throws Exception {
        ChromeOptions chromeOptions = new ChromeOptions();
        chromeOptions.addArguments("--no-sandbox", "--headless", "--disable-dev-shm-usage",
                "--disable-extensions", "--disable-gpu");
        // 移除容器环境下不必要的--remote-debugging-port参数,避免端口绑定冲突
        browser = new BrowserWebDriverContainer()
                .withCapabilities(chromeOptions);
        browser.start();

        // 配置Selenide连接到TestContainers的Selenium服务
        Configuration.remote = browser.getSeleniumAddress();
        Configuration.browser = "chrome";
        // 可选:延长超时时间,确保容器服务完全就绪
        Configuration.timeout = 10000;
    }
}

2. 优化Chrome启动参数

删除--remote-debugging-port=9222参数:TestContainers默认不会暴露该端口,强行指定会导致Chrome无法正常绑定端口,进而触发崩溃。

3. 增加容器资源限制(可选)

若Chrome因内存不足崩溃,可为容器分配更多资源:

browser = new BrowserWebDriverContainer()
        .withCapabilities(chromeOptions)
        .withMemoryLimit(1024 * 1024 * 1024) // 分配1GB内存
        .withStartupTimeout(Duration.ofMinutes(2)); // 延长启动超时时间

4. 检查依赖兼容性(可选)

当前使用的Selenide 5.20.1与TestContainers 1.16.3版本兼容,但如果问题仍存在,可尝试升级至较新版本:

  • Selenide升级至6.x系列
  • TestContainers升级至1.17.x及以上版本

内容的提问来源于stack exchange,提问作者G.Khandal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:40:30