0

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

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

但这并没有起到作用,因为测试在“处理的 0 页”上发现了审计并且失败了。我该怎么办?

4

1 回答 1

0

Capybara 试图自己做这件事,但我猜审计需要的时间比 Capybara 准备等待的时间要长。假设您的规范设定了以下预期:

expect(page).to have_css('#pageKeywords', text: %r{"[1-9][1-9]" pages processed}, visible: true)

Capybara会等待一段时间才能发生这种情况。该方法通过在指定的秒数内synchronize捕获异常来处理此问题。但是,您可以通过将您的期望作为一个块传递给 Capybara 来等待更长的时间:Capybara::ElementNotFoundCapybara.default_wait_timeCapybara.with_wait_time

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

于 2013-07-26T21:03:37.530 回答