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

Capybara+Selenium+Firefox配置默认窗口大小不生效如何解决?

问题原因

Firefox 无头模式下的 --window-size 命令行参数生效逻辑与 Chromium 存在差异,该参数仅在浏览器启动瞬间生效,后续会被 GeckoDriver 的默认窗口配置覆盖,最终还原为系统默认视口尺寸,这是 GeckoDriver 已知的行为特性,并非配置代码存在语法错误。

解决方案

无需额外手动调用调整方法,也不需要配置全局 before 钩子,直接修改驱动注册代码,在驱动实例化后立刻执行一次窗口大小调整即可,修改后的代码如下:

RSpec.configure do |config|
  Capybara.register_driver :selenium_headless do |app|
    version = Capybara::Selenium::Driver.load_selenium
    options_key = Capybara::Selenium::Driver::CAPS_VERSION.satisfied_by?(version) ? :capabilities : :options
    browser_options = ::Selenium::WebDriver::Firefox::Options.new.tap do |opts|
      opts.add_argument '-headless'
      opts.add_argument '--window-size=1920,1080'
    end
    # 先实例化驱动
    driver = Capybara::Selenium::Driver.new(app, **{ :browser => :firefox, options_key => browser_options })
    # 驱动启动后立刻调整窗口大小,仅执行一次
    driver.browser.manage.window.resize_to(1920, 1080)
    driver
  end
end

该方案仅在驱动首次注册启动时执行一次大小调整,不会在每个测试用例前重复执行,性能损耗可以忽略,也和原有注册逻辑耦合度最低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 15:27:03