我有一个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
答案 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文件中配置
希望这会有所帮助:)