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
相关产品推荐
相关产品推荐

