Rails7+Capybara集成Selenium-Webdrivers报错:unknown keyword: :capabilities
解决Selenium/Webdrivers更新后的ArgumentError问题
问题根源
你遇到的unknown keyword: :capabilities错误主要来自两个点:
- 代码存在语法疏漏:
headless_chrome驱动注册时,options:参数后未指定对应变量,导致参数传递异常 - Selenium 4.x API变更:旧的
desired_capabilities参数已被弃用,需改用Options类配置浏览器参数
修复步骤
修正语法错误
你的headless_chrome驱动代码中,Capybara::Selenium::Driver.new的options:后缺少变量名,需补充为options: options。适配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) - 确认
capybaragem已更新到适配Selenium 4的版本(建议3.38.0+),避免版本不兼容问题
内容的提问来源于stack exchange,提问作者tkhobbes
相关产品推荐
相关产品推荐

