【问题标题】:Change default Capybara browser window size更改默认 Capybara 浏览器窗口大小
【发布时间】:2013-08-25 18:02:50
【问题描述】:

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

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

根据How to set Browser Window size in Rspec (Selenium) 进行特定的 RSpec 测试,但有没有办法在全局范围内执行此操作,以便受媒体查询影响的每个测试都不必定义这个?

【问题讨论】:

    标签: ruby selenium rspec capybara


    【解决方案1】:

    对所有 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 和 Poltergeist:undefined method 'manage' for #<Capybara::Poltergeist::Browser:0x007fd4e76ec828>
    • 嘿@tirdadc 你用的是什么版本?
    • 好的,我可以看到没有管理 Poltergeist 但有一种方法可以调整大小,更新答案!
    【解决方案2】:

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

    【讨论】:

    • 那么我需要在每个规范文件中都这样做吗?我该如何处理所有的事情
    • 您可以使用 RSpec.configure 在示例中包含或扩展模块,然后将 before :all/:each 放在您要包含/扩展的模块中:relishapp.com/rspec/rspec-core/docs/helper-methods/…
    【解决方案3】:

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

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

    【讨论】:

    • 这是目前唯一至少做某事的人,但我收到 Capybara::NotSupportedByDriverError 错误。我尝试了 poltergeist 和 webkit。我正在运行 Ubuntu 16.04,有人知道出了什么问题吗?
    • @Aurimas 您可以尝试更改您的驱动程序,尝试在您的规范中使用js: true
    【解决方案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 驱动程序

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

    【讨论】:

      【解决方案5】:

      @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::Poltergeist::Driver.new(app, js_errors: false, window_size: [1280, 800]) 并且成功了。
      猜你喜欢
      • 2011-07-17
      • 2013-09-09
      • 2011-11-14
      • 2013-11-30
      • 2016-03-07
      • 2015-07-28
      • 2012-08-12
      • 1970-01-01
      • 2015-04-20
      相关资源
      最近更新 更多