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

时间:2013-08-22 20:19:37

标签: ruby selenium rspec capybara

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

page.driver.browser.manage.window.resize_to(x,y)
对于特定的RSpec测试,每个How to set Browser Window size in Rspec (Selenium)

,但有没有办法在全局范围内执行此操作,以便受媒体查询影响的每个测试都不必定义此项?

5 个答案:

答案 0 :(得分:35)

为所有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

答案 1 :(得分:13)

您可以在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

答案 2 :(得分:13)

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

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

答案 3 :(得分:4)

对于 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 DRIVER

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

scenario js: true do
  # your test here
end

答案 4 :(得分:2)

@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