Я тестирую поток пользовательского интерфейса с помощью стека Capybara и SitePrism.К сожалению, мой поток пользовательского интерфейса не является полностью детерминированным, и иногда в потоке появляется предупреждающее сообщение.Поэтому мне нужно иметь условный поток в тесте.
Чтобы дождаться одного элемента, SitePrism предоставляет
@page.wait_for_<element name>
В моем случае могут появиться два элемента, :button_submit
или :warning_popup
.Что мне нужно сделать, это что-то вроде:
element_name = @page.wait_for_any_of(:button_submit, :warning_popup)
Есть ли какой-нибудь более элегантный способ, кроме как запустить такой цикл?
element_name = nil
while (element_name.nil?) do
element_name = :button_submit if app.page.has_button_submit?
element_name = :warning_popup if app.page.has_warning_popup?
sleep 0.1
end
Я знаю, что этот цикл может закончиться бесконечноцикл, я буду держать его здесь упрощенным для иллюстрации.