如何验证js弹出的正则表达式值何时在水豚/黄瓜中可见

时间:2013-07-24 22:23:04

标签: javascript jquery ruby cucumber capybara

我正在自动执行一个功能,其中弹出对话框启动审计,显示页面值为0作为状态,但此值将更改为非零值。我需要在出现时验证非零值,以便我可以单击“确定”按钮继续该过程。水豚没有wait_until。所以水豚测试需要“等待”,直到我的正则表达式变为真。我尝试了几个选项,这是我的最后一个,它失败了。使用“睡眠”不是正确的方法。

find(:xpath, '//*[@id="pageKeywords"]', :text => /"[1-9][1-9]" pages processed/).should be_visible

但是,当测试在“处理0页”时发现审计并且失败时,这不是诀窍。我怎么能这样做呢?

1 个答案:

答案 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秒,然后放弃满足期望。