更改默认的Capybara浏览器窗口大小

所以,关于使用Capybara和RSpec的集成测试,我知道我可以这样做:

page.driver.browser.manage.window.resize_to(x,y) 

per 如何在 Rspec (Selenium)中为特定的RSpec测试设置浏览器窗口大小 ,但有没有办法全局执行此操作,以便受媒体查询影响的每个测试都不必定义此项?

您可以在before(:all)定义before(:all)

 describe "Test" do before(:all) do ... ... page.driver.browser.manage.window.resize_to(x,y) #Mention it here end it "should find everything" do ... end after(:all) do ... end end 

对所有js测试执行此操作的正确方法是在spec_helper.rb RSpec.configure块中添加以下内容

 config.before(:each, js: true) do Capybara.page.driver.browser.manage.window.maximize end 

最大化窗口。 更改为resize_to(x,y)以设置任何窗口大小。

编辑 :如果您碰巧使用Poltergeist,正确的做法是

 config.before(:each, js: true) do Capybara.page.driver.browser.resize(x,y) end 

也许是由于最近Capybara的变化,对我有用的是:

 before do Capybara.page.current_window.resize_to(x, y) end 

@tirdadc如果你正在使用Poltergeist,你可以在你的rails_helper.rb文件中添加这样的东西:

 Capybara.register_driver :poltergeist do |app| options = { # js_errors: true, # cookies: true, window_size: [320, 568] # iphone 5 } Capybara::Poltergeist::Driver.new(app, options) end 

对于Capybara 2.2.4版本中的测试运行时,您可以通过执行此操作来实现此目的

 before do handle = Capybara.page.driver.current_window_handle Capybara.page.driver.resize_window_to(handle, height, width) end 

要么

 before do Capybara.page.current_window.resize_to(height, width) end 

如果你得到Capybara :: NotSupportedByDriverError:Capybara :: Driver :: Base#current_window_handle你必须改变你的驱动程序,例如使用JAVASCRIPT驱动程序

 before do Capybara.page.current_window.resize_to(height, width) end scenario js: true do # your test here end