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

Github Action运行Ruby自动化脚本报DevToolsActivePort不存在如何解决

解决方案

核心故障原因

GitHub Actions的容器运行环境无图形界面、沙箱权限受限、共享内存空间小,和本地运行环境差异大,Chrome默认启动配置无法适配容器环境,才会触发DevToolsActivePort不存在、启动异常的报错。

第一步:修改Selenium Chrome启动参数

必须在你的自动化脚本中加入以下Chrome启动参数,参数缺失是该报错最常见的诱因:

  • --headless=new:Chrome 112及以上稳定版使用新无头模式,低于该版本可替换为--headless=chrome
  • --no-sandbox:关闭Chrome沙箱机制,适配容器环境的权限限制
  • --disable-dev-shm-usage:禁用/dev/shm共享内存分区,避免容器默认共享内存不足导致Chrome崩溃
  • --remote-debugging-port=9222:手动指定DevTools调试端口,避免端口自动分配失败

Ruby环境Selenium配置示例:

options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless=new')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--remote-debugging-port=9222')
driver = Selenium::WebDriver.for :chrome, options: options

第二步:优化GitHub Actions工作流配置

删除原工作流中Launch chrome driver的手动启动步骤,手动启动Xvfb、Chromedriver容易出现进程顺序错误、端口冲突问题,当前版本Selenium支持自动管理驱动进程,仅保留以下驱动配置即可:

- name: Set up Chrome
  uses: browser-actions/setup-chrome@latest
  with:
    chrome-version: stable

- name: Download chrome driver
  uses: nanasess/setup-chromedriver@master
  with:
    chrome-version: stable # 强制和Chrome版本对齐,避免版本不兼容

可选校验项

如果完成上述两步后仍报错,可逐一排查以下问题:

  • 确认Chrome和Chromedriver的大版本号完全匹配,跨大版本的搭配会触发启动异常
  • 移除配置中多余的--disable-gpu参数,该参数仅适配旧版Windows环境的无头模式,Linux环境下添加反而会导致启动失败
  • 在启动参数中添加--verbose,打印Chrome启动全日志定位具体故障点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 09:18:02