【问题标题】:Increase poltergeist timeout for a specific capybara click_button call增加特定 capybara click_button 调用的 poltergeist 超时
【发布时间】:2016-02-17 15:49:36
【问题描述】:

我有一个 Rails 项目,我正在使用 rspec/capybara/poltergeist/phantomjs 对其进行测试。我知道我可以使用常规设置增加常规 poltergeist 超时

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, timeout: 2.minutes)
end

但是有没有办法增加特定请求的超时时间?

我有一个带有按钮 (id=submit) 的页面,它会在返回之前启动一个较长的(90-120 秒)运行过程。我正在努力优化后端以缩短请求时间,但与此同时,我想在测试时增加该特定请求的超时时间,所以类似于

click_button 'submit', wait: 180

【问题讨论】:

标签: ruby-on-rails capybara poltergeist


【解决方案1】:

你可以的

Capybara.using_wait_time(180) do
   click_button 'submit'
end

你可以做的另一件事是

 # capybara.rb

 Capybara.register_driver :poltergeist do |app|
     Capybara::Poltergeist::Driver.new(app, timeout: 30)
 end

 Capybara.register_driver :poltergeist_long do |app|
     Capybara::Poltergeist::Driver.new(app, timeout: 180)
 end


 # wherever.rb

 session = Capybara::Session.new(:poltergeist_long)
 session.visit("http://thatlongwaittime.com")

【讨论】:

  • 这不会影响 Capybara 的 wait_time,即 Capybara 等待 javascript 和其他非固有页面资源加载和执行的时间,而不是 Poltergeist 的读取超时时间?
【解决方案2】:

可以通过增加通常在 env.rb 文件中配置的默认等待时间的值来增加特定请求的超时。 为了更好地理解这一点,让我们参考下面的代码:

黄瓜文件:

When Joe is on abc page
Then Joe clicks submit button

点击提交按钮的步骤定义:

Then(/^Then Joe clicks submit button$/) do
  Capybara.default_wait_time = 120  // increasing the default wait time to 180 seconds
  click_button('submit')  // performing the action
  Capybara.default_wait_time = DEFAULT_WAIT_TIME  // reset the wait time to its default value after clicking submit button.
end

注意:DEFAULT_WAIT_TIME的值可以在env.rb文件中配置

希望这会有所帮助:)

【讨论】:

    猜你喜欢
    • 2017-03-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多