在Poltergeist中暂时将js_errors设置为false

时间:2014-02-25 16:44:35

标签: javascript capybara poltergeist

我有一组测试导致用户登录的Facebook页面。不幸的是,这个页面有一些我无法影响的JavaScript错误,所以我的测试永远不会完成。

有没有办法暂时禁用JS错误检查?我正在考虑这样的事情:Capybara.javascript_driver.js_errors = false然后将其设置为true,但不幸的是,这不起作用。我尝试过这种变化无济于事。

关于我的问题如何解决的任何想法?

2 个答案:

答案 0 :(得分:11)

感谢Roman Pominov的评论,我找到了解决方案。实际上很简单:

我刚刚在有问题的陈述之后添加了rescue Capybara::Poltergeist::JavascriptError,然后它就像一个魅力。我最初的想法太复杂了;)

答案 1 :(得分:7)

这就是诀窍:

page.driver.browser.js_errors = false

你也可以添加回调:

# spec_helpers.rb
config.around(:each) do |example|
  original_value = page.driver.browser.instance_variable_get(:@js_errors)
  if example.metadata.has_key?(:js_errors)
    page.driver.browser.js_errors = example.metadata[:js_errors]
  end

  example.run

  page.driver.browser.js_errors = original_value
end

在你的测试中:

# my_feature_spec.rb
it "should ignore errors", js_errors: false do
  ...
end
相关问题