我有一组测试导致用户登录的Facebook页面。不幸的是,这个页面有一些我无法影响的JavaScript错误,所以我的测试永远不会完成。
有没有办法暂时禁用JS错误检查?我正在考虑这样的事情:Capybara.javascript_driver.js_errors = false
然后将其设置为true
,但不幸的是,这不起作用。我尝试过这种变化无济于事。
关于我的问题如何解决的任何想法?
答案 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