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

Rails7+Capybara集成Selenium-Webdrivers报错:unknown keyword: :capabilities

解决Selenium/Webdrivers更新后的ArgumentError问题

问题根源

你遇到的unknown keyword: :capabilities错误主要来自两个点:

  • 代码存在语法疏漏:headless_chrome驱动注册时,options:参数后未指定对应变量,导致参数传递异常
  • Selenium 4.x API变更:旧的desired_capabilities参数已被弃用,需改用Options类配置浏览器参数

修复步骤

  1. 修正语法错误
    你的headless_chrome驱动代码中,Capybara::Selenium::Driver.new的options:后缺少变量名,需补充为options: options。

  2. 适配Selenium 4的无头模式参数
    Selenium 4中Chrome的无头模式参数已从headless改为headless=new,需同步更新配置。

完整正确配置

替换rails_helper.rb中的驱动注册代码为以下内容:

Capybara.register_driver :chrome do |app|
  Capybara::Selenium::Driver.new(app, browser: :chrome)
end

Capybara.register_driver :headless_chrome do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('window-size=1400,1400')
  options.add_argument('headless=new') # Selenium 4.x 适配的无头模式参数

  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end

额外说明

  • 若坚持使用Remote::Options写法,需确保参数传递完整:
    options = Selenium::WebDriver::Remote::Options.chrome(
      'goog:chromeOptions': { args: %w(window-size=1400,1400 headless=new) }
    )
    Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
    
  • 确认capybara gem已更新到适配Selenium 4的版本(建议3.38.0+),避免版本不兼容问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:56:14