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

Selenium搭配geckodriver运行火狐测试后出现Stopped listening on port错误如何解决

Selenium Firefox驱动销毁阶段报错解决方案

报错成因

  • 核心触发原因是@AfterMethod中重复执行了驱动关闭逻辑:driver.close()的作用是关闭当前处于激活状态的浏览器窗口,当浏览器仅剩余一个窗口时,调用close()会直接启动浏览器进程的销毁流程,火狐内置的Marionette控制组件会先停止端口监听,内部的RemoteSettingsWorker线程也会进入销毁状态。此时紧接着执行的driver.quit()会向已经启动销毁流程的浏览器进程再次发送退出指令,触发已关闭的组件抛出无法导入资源的错误,同时触发IPC通信层的警告。
  • 该报错属于浏览器销毁阶段的时序冲突日志,不会影响测试用例的实际执行结果,为非致命的警告类输出。

排查处理方案

  • 修正驱动关闭逻辑:删除多余的driver.close()调用,仅保留driver.quit()即可。quit()方法本身会自动关闭所有打开的浏览器窗口、终止浏览器进程并释放驱动所有占用资源,无需提前调用close()。可增加非空判断避免空指针异常,修正后代码如下:
@AfterMethod
public void quitDriver() {
    if (driver != null) {
        driver.quit();
    }
}
  • 屏蔽无关日志:如果调整关闭逻辑后仍有残留警告输出且不希望在控制台显示,可在FirefoxOptions中添加配置项关闭RemoteSettings相关日志:
FirefoxOptions options = new FirefoxOptions();
options.setCapability("marionette", true);
// 新增以下配置屏蔽冗余日志
options.addPreference("dom.remoteSettings.enabled", false);
options.addPreference("devtools.console.stdout.content", false);
driver = new FirefoxDriver(options);
  • 确认环境版本匹配:你当前使用的Firefox 90.0.2(32-bit)与Geckodriver 0.29.1 Win32为官方匹配的版本组合,不存在版本兼容问题,无需调整版本。若后续升级浏览器版本,需对应升级Geckodriver到适配的版本即可。
  • 排查用例资源冲突:如果调整关闭逻辑后仍复现报错,检查是否存在多个测试用例共享同一个driver实例的情况,避免出现一个用例已经销毁driver后,其他用例仍在调用driver执行操作的时序问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 19:18:04