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

Chrome Driver结合Serenity BDD使用后关闭异常、CPU占用过高求助

解决Serenity BDD中Chrome Driver进程残留、高CPU占用问题

以下是几个针对性的解决方案,按优先级尝试:

  • 确保调用正确的驱动终止方法
    不要用driver.close(),它只会关闭当前浏览器窗口,不会终止ChromeDriver进程。必须在测试结束的teardown阶段调用driver.quit()。如果用Serenity的默认驱动管理,检查是否在@After注解的方法里正确触发了驱动销毁;如果是自定义驱动实例,一定要在测试完成后显式调用quit()。

  • 调整Serenity的驱动生命周期配置
    在serenity.properties文件中添加或修改以下配置:

    # 测试结束后强制退出驱动
    serenity.driver.quit.on.test.finish=true
    # 禁止复用浏览器实例,避免进程残留
    serenity.driver.reuse.browser=false
    
  • 添加Chrome启动参数优化进程管理
    试试这些参数来减少进程异常挂起的情况,在serenity.properties中配置:

    webdriver.chrome.args=--disable-dev-shm-usage,--no-zygote,--disable-background-timer-throttling
    

    各参数作用:

    • --disable-dev-shm-usage:解决共享内存不足导致的进程异常(跨平台适用)
    • --no-zygote:禁用Chrome的zygote孵化进程,减少子进程残留
    • --disable-background-timer-throttling:避免Chrome后台定时器被节流导致进程无法正常退出
  • 手动强制清理残留进程(应急方案)
    如果以上方法仍有残留,可以在测试套件的@AfterSuite方法中执行系统命令杀掉相关进程:

    @AfterSuite
    public void cleanUpChromeProcesses() {
        String os = System.getProperty("os.name").toLowerCase();
        try {
            if (os.contains("win")) {
                Runtime.getRuntime().exec("taskkill /F /IM chrome.exe /IM chromedriver.exe");
            } else {
                Runtime.getRuntime().exec("pkill -f chrome");
                Runtime.getRuntime().exec("pkill -f chromedriver");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
  • 检查版本兼容性
    确认Chrome浏览器和ChromeDriver的大版本完全一致(比如Chrome 119对应ChromeDriver 119.x),版本不匹配是进程异常残留的常见原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 01:39:58