Capybara webkit无效响应错误,如何调试?

我正在尝试为网页编写请求规范。

此页面正在开发中,没有错误。

但是在capybara webkit中运行后,在尝试提交表单后出现此错误:

Failure/Error: Unable to find matching line from backtrace Capybara::Driver::Webkit::WebkitInvalidResponseError: Unable to load URL: https://127.0.0.1:33416/sign_in 

为了找出原因,我开始在页面上剥离标记和JavaScript。 到了具有普通提交按钮的空表单的程度。 我仍然得到上述错误!

该测试现在字面上:

 it "should be able create a new foo", :js, :focus do visit new_foo_path find('#submit').click end 

但是,如果我删除:js选项,此测试确实有效:

 it "should be able create a new foo", :focus do visit new_foo_path find('#submit').click end 

Javascript测试在此应用程序的其他页面中有效…

这对我没有意义。 有没有人有任何建议如何从这里调试?

谢谢你的帮助

您看到的错误很可能是capybara-webkit的神秘方式,告诉您页面中存在某种exception。 我有一段时间遇到同样的问题 ,“无法加载URL”的事情完全让我失望,很难找到实际的问题。

作为一些尝试,我建议:

  • 确保安装了最新版本的capybara-webkit。
  • 检查测试元素而不是实际forms,例如控制器逻辑和所涉及的任何模型。 剥去一切,直到你什么都没有。
  • 查看有关此问题的讨论 ,并从那里关注潜在客户。 我很确定这是同一个问题或相关问题。

祝好运!

将以下内容添加到capybara配置中。

 require 'rack/utils' Capybara.app = Rack::ShowExceptions.new(NameOfYourRailsApp::Application) 

当您收到错误时,您将在stdout上看到它,并且机架将呈现一个页面,其中包含有关环境(cookie等)和回溯的详细信息。

我正在使用子域名,我可以将其添加到spec_helper.rb

 Capybara.configure do |config| config.javascript_driver = :webkit config.server_port = 3000 config.app_host = "http://subdomain.local.host:3000" end 

显然在127.0.0.1 subdomain.local.host之前添加到我的/etc/hosts文件中

我遇到了类似的问题,并且能够通过启用page.driver.browser.ignore_ssl_errors来修复它:js enabled tests。 这是适合我的代码:

 config.before(:each) do if Capybara.current_driver == :webkit # Need to manually specify ignoring of SSL errors page.driver.browser.ignore_ssl_errors end end