2016-02-16 3 views
1

У меня есть проект рельсов, который я тестирую с помощью rspec/capybara/poltergeist/phantomjs. Я знаю, что может увеличить общий полтергейст таймаут с общими настройкамиУвеличьте время полтергейста для определенного вызова capybara click_button

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

Похоже, вы можете сделать это [переключением драйверов вне] (http://stackoverflow.com/questions/31383385/capybara-increase-max-allowed-page-load-time) – sirlark

ответ

2

Вы можете сделать

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

Не влияет ли это на Capybara's wait_time , на сколько времени Capybara будет ждать javascript и других неинтерминированных ресурсов страницы для загрузки и выполнения, а не для тайм-аута чтения Poltergeist? – sirlark

0

Timeuouts для конкретных запросов может быть увеличена за счет увеличения значения времени ожидания по умолчанию, которое, как правило, сконфигурированный в вас файл 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 может быть сконфигурированы in env.rb file

Надеюсь, что это поможет :)

Смежные вопросы