如何使用Capybara 2.1声明AJAX完成和重定向?

时间:2013-10-17 20:37:41

标签: javascript selenium capybara

我有一个带有表单的页面。提交表单后,将对服务器进行AJAX调用。如果成功,页面将使用JavaScript重定向到新页面,如下所示:

$('form').bind('ajax:success', function(){
   window.location = redirect_url;
}); 

如何使用Capybara测试此重定向?我正在使用Caplenbara的Selenium webdriver。填写并提交表单很简单,但我不确定如何测试这个AJAX +重定向组合。

在Capybara 2(http://www.elabs.se/blog/53-why-wait_until-was-removed-from-capybara)中似乎也删除了wait_until,所以我真的不确定如何断言此重定向。

谢谢!

1 个答案:

答案 0 :(得分:-1)

我找到了等待重定向的解决方案。

def wait_for_redirect(url)
  start = Time.now
  while true
    break if current_path == url
    if Time.now > start + 20.seconds
      fail "Redirect failed!"
    end
    sleep 0.5
  end
end

现在我可以致电wait_for_redirect "/some/url/here"