如何在导轨5.1中设置镀铬无头系统测试的屏幕尺寸?

时间:2017-11-08 14:33:59

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

为了使用并测试我的网站的新响应前端,我正在尝试使用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)

但渲染屏幕截图的大小仍然是默认值,而且要小得多。理想情况下,我希望看到整个渲染页面,但在这一点上,我很高兴只使用我提供的尺寸。

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

3 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:6)

有同样的问题。

更改了此行

driven_by :selenium_chrome_headless, screen_size: [1400, 1400]

对此

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

解决此问题。

答案 2 :(得分:-3)

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

来自文档:

  

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

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