Capybara:验证没有加载ajax的内容

时间:2014-02-13 16:04:26

标签: selenium rspec capybara selenium-webdriver

visit "/whatever"
expect(page).to have_no_content "This is loaded in asynchronously"

这应该失败,但是过去了。为什么?当页面首次加载时,内容不存在,而且Capybara合理地不等待它。

现在Capybara 2.0宣布了wait_until个坏消息,等待这些内容的祝福方式是什么?

2 个答案:

答案 0 :(得分:1)

visit "/whatever"
wait_for_ajax do
  expect(page).to have_no_content "This is loaded in asynchronously"
end

然后,在spec_helper

def wait_for_ajax
  sleep(Capybara.default_wait_time)
  yield
end

请注意,每次运行此规范时,等待Capybara的default_wait_time结束。但是我不知道你还要检查那样的东西。如果您的ajax快速执行,您可以通过将default_wait_time设置为1秒来补偿这一点。

答案 1 :(得分:1)

visit "/whatever"
wait_for_ajax do
  expect(page).to have_no_content "This is loaded in asynchronously"
end

然后,在spec_helper

def wait_for_ajax
  page.evaluate_script("jQuery.active") == 0
  yield
end

这将评估脚本,直到它为止,然后运行你的断言。