我正在自动执行一个功能,其中弹出对话框启动审计,显示页面值为0作为状态,但此值将更改为非零值。我需要在出现时验证非零值,以便我可以单击“确定”按钮继续该过程。水豚没有wait_until
。所以水豚测试需要“等待”,直到我的正则表达式变为真。我尝试了几个选项,这是我的最后一个,它失败了。使用“睡眠”不是正确的方法。
find(:xpath, '//*[@id="pageKeywords"]', :text => /"[1-9][1-9]" pages processed/).should be_visible
但是,当测试在“处理0页”时发现审计并且失败时,这不是诀窍。我怎么能这样做呢?
答案 0 :(得分:0)
Capybara试图独自完成这项工作,但我猜测审计需要的时间比Capybara准备等待的时间要长。假设你的规范设定了一个期望:
expect(page).to have_css('#pageKeywords', text: %r{"[1-9][1-9]" pages processed}, visible: true)
Capybara 会等待一段时间才会发生这种情况。 synchronize
方法通过在Capybara::ElementNotFound
中指定的秒数捕获Capybara.default_wait_time
个异常来处理此问题。但是,您可以通过将期望作为一个块传递给Capybara.with_wait_time
来让Capybara等待更长时间:
Capybara.with_wait_time(30) do
expect(page).to have_css('#pageKeywords', text: %r{"[1-9][1-9]" pages processed}, visible: true)
end
轰!现在,Capybara将等待30秒,然后放弃满足期望。