更改默认 Capybara 浏览器窗口大小
Posted
技术标签:
【中文标题】更改默认 Capybara 浏览器窗口大小【英文标题】:Change default Capybara browser window size 【发布时间】: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 测试,但有没有办法在全局范围内执行此操作,以便受媒体查询影响的每个测试都不必定义这个?
【问题讨论】:
【参考方案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])
并且成功了。以上是关于更改默认 Capybara 浏览器窗口大小的主要内容,如果未能解决你的问题,请参考以下文章