为了使用并测试我的网站的新响应前端,我正在尝试使用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)
但渲染屏幕截图的大小仍然是默认值,而且要小得多。理想情况下,我希望看到整个渲染页面,但在这一点上,我很高兴只使用我提供的尺寸。
关于我在这里缺少什么的想法?
答案 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来更改浏览器屏幕的大小。 这两个选项不适用于无头驱动程序,如果通过将被忽略。
巨大的无赖。测试响应式网站几乎是不可能的,因为某些元素会根据屏幕宽度显示和隐藏。