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

Capybara搭配Selenium启动Chrome无头模式时浏览器仍正常启动问题

修复Chrome无头模式不生效问题

核心原因

你当前配置的Chrome启动参数缺失--前缀,导致参数无法被Chrome识别,浏览器默认以普通模式启动。

修复步骤

  • 修正配置中的启动参数,统一使用带--前缀的标准Chrome命令行参数,推荐使用Selenium官方推荐的Options写法,避免与desired_capabilities产生优先级冲突,正确配置如下:
Capybara.register_driver :headless_chrome do |app|
  chrome_options = Selenium::WebDriver::Chrome::Options.new(
    args: %w[
      --headless
      --no-sandbox
      --disable-gpu
      --disable-popup-blocking
      --window-size=1920,1080
    ]
  )
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: chrome_options)
end

Capybara.default_driver = :headless_chrome
Capybara.javascript_driver = :headless_chrome
  • 验证ChromeDriver版本匹配:Chrome 86必须对应大版本为86的ChromeDriver,执行chromedriver --version确认版本,版本不兼容请替换为对应版本的ChromeDriver。
  • 排查配置覆盖:检查所有测试用例、其他辅助配置文件中是否存在指定default_driver为:chrome、或者测试用例中单独声明使用:chrome驱动的代码,此类代码会覆盖你注册的:headless_chrome驱动。
  • 本地验证Chrome无头模式:在终端执行以下命令,确认没有弹出Chrome窗口,说明浏览器本身支持无头模式:
    google-chrome --headless --disable-gpu --no-sandbox about:blank

特殊场景适配

如果你使用的是Rails系统测试,需要在application_system_test_case.rb中修改默认驱动声明,避免Rails默认配置覆盖你的自定义驱动:

driven_by :headless_chrome

内容的提问来源于stack exchange,提问作者automation-novice

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:06:00