在Poltergeist中暂时将js_errors设置为false

Tra*_*ash 11 javascript capybara poltergeist

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

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

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

Tra*_*ash 11

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

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


Pav*_*eev 7

这就是诀窍:

page.driver.browser.js_errors = false
Run Code Online (Sandbox Code Playgroud)

您还可以添加回调:

# 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
Run Code Online (Sandbox Code Playgroud)

在你的测试中:

# my_feature_spec.rb
it "should ignore errors", js_errors: false do
  ...
end
Run Code Online (Sandbox Code Playgroud)