Я использую следующий код в моем RSpec тест:Как ждать и принять окно предупреждения с Капибара/селеном
describe "Save should create a BasketItem and a Basket" do
subject {
lambda {
click_button I18n.t(:create_basket_and_add_items)
page.driver.browser.switch_to.alert.accept # close the alert box
}
}
it { should change(BasketItem, :count).by(1) }
it { should change(Basket, :count).by(1) }
end
В click_button
пожары ненавязчивый Javascript вызова, который отображает предупреждение всплывающее окно. Однако закрытие окна предупреждения успешно выполняется только примерно в 50% тестовых прогонов, я думаю, потому что окно предупреждения не всегда находится на экране уже во время выполнения команды page.driver.browser.switch_to.alert.accept
. Следующий тестовый сценарий, конечно, запускается в «Ошибка тайм-аута», если окно предупреждения не закрыто.
Он работает всегда правильно, если я использую sleep 1
между click_button
и ...alert.accept
, но это не очень хорошее решение. Есть идеи?