增加特定的水豚click_button调用的poltergeist超时

时间:2016-02-16 08:49:53

标签: ruby-on-rails capybara poltergeist

我有一个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

2 个答案:

答案 0 :(得分:4)

你可以做到

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")

答案 1 :(得分:1)

通过增加通常在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文件中配置

希望这会有所帮助:)