我正在使用 Capybara 和 SitePrism 堆栈测试 UI 流程。不幸的是,我的 UI 流不是完全确定的,有时会在流中弹出一条警告消息。因此我需要在测试中有一个条件流。
要等待单个元素,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
我知道这个循环可能会以无限循环结束,我将在此处简化以进行说明。