【问题标题】:How to set screen size for chrome headless system test in rails 5.1?如何在 Rails 5.1 中为 Chrome 无头系统测试设置屏幕尺寸?
【发布时间】:2017-11-08 14:33:58
【问题描述】:

为了使用和测试我的网站的新响应式前端,我正在尝试将 Rails 的新系统测试(规范)与 javascript 和 Chrome 无头。不过,我想不出一种在规范中设置浏览器屏幕大小的方法。

这是我在spec/rails_helper.rb 中的设置

config.before(:each, type: :system, js: true) do
  driven_by :selenium_chrome_headless, screen_size: [1900, 800]
end

然后我创建截图:

page.driver.save_screenshot(the_uri)

但是渲染截图的大小还是默认的,小了很多。理想情况下,我希望看到整个呈现的页面,但在这一点上,我很乐意只使用我提供的尺寸。

关于我在这里缺少什么的想法?

【问题讨论】:

    标签: ruby-on-rails rspec-rails google-chrome-headless


    【解决方案1】:

    您只需重新定义传递无头和屏幕尺寸参数的驱动程序。

    Capybara.register_driver :selenium_chrome_headless do |app|
      options = Selenium::WebDriver::Chrome::Options.new
    
      [
        "headless",
        "window-size=1280x1280",
        "disable-gpu" # https://developers.google.com/web/updates/2017/04/headless-chrome
      ].each { |arg| options.add_argument(arg) }
    
      Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
    end
    
    RSpec.configure do |config|
      config.before(:each, type: :system, js: true) do
        driven_by :selenium_chrome_headless
      end
    end
    

    【讨论】:

    • 奇怪的是,“window-size=1280x1280”适用于 selenium_chrome_headless,但不适用于 selenium_chrome。但是,“--window-size=1280,1280”对两者都有效。
    • 同样奇怪的是,这不适用于 Selenium JVM。这让我非常沮丧。
    【解决方案2】:

    有同样的问题。

    改变了这一行

    driven_by :selenium_chrome_headless, screen_size: [1400, 1400]
    

    到这里

    driven_by :selenium, using: :headless_chrome, screen_size: [1400, 1400]
    

    解决问题。

    【讨论】:

    • 这为我解决了问题。也与driven_by 相关,尊重options:driven_by :selenium, using: :headless_chrome, options: {args: %w(headless disable-gpu no-sandbox disable-dev-shm-usage window-size=1920,1080)}
    • 如果其他人想知道为什么这有效,可能是因为:selenium_chrome_headless 已经注册(参见capybara/registrations/drivers.rb)所以@ 987654328@ 被忽略。只是猜测。
    【解决方案3】:

    我今天刚刚遇到这个问题,我认为答案是......你不能:(

    来自文档:

    driven_by 具有驱动程序名称的必需参数。关键字参数是 :using 用于浏览器和 :screen_size 用于更改浏览器屏幕的大小。 这两个选项不适用于无头驱动程序,如果通过,将被忽略

    真是太可惜了。测试响应式网站几乎是不可能的,因为某些元素会根据屏幕宽度显示和隐藏。

    【讨论】:

      猜你喜欢
      • 2017-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 1970-01-01
      • 2017-11-04
      相关资源
      最近更新 更多