如何与rspec和capybara进行javascript JSON响应交互

时间:2013-06-11 14:18:42

标签: selenium rspec capybara

我正在使用rspec和capybara,并且想要测试我得到的JSON响应,例如click_button。我明白我可以使用:js =>是的,但我想解析我得到的JSON。我看到我可以做类似的事情:

get '/your/path', format: 'js'

有没有办法做类似的事情:

click_button('Save', format: 'js')
::JSON.parse(response)....

thx

1 个答案:

答案 0 :(得分:3)

像Selenium这样的浏览器洗脱库的目的是接近真实的浏览器并允许模拟真实用户的行为。真实用户无法读取对AJAX操作的响应,因此浏览器仿真库无法提供此类功能。 Also it will be quiet hard for Selenium guys to implement it.

您有几种可能性:

  • 使用http client libraries之一编写此测试。但你无法使用这种方法测试涉及大量Javascript和AJAX的端到端内容
  • AJAX操作可能会改变应用程序的DOM中的某些内容。您可以使用Capybara轻松地为它编写支票。
  • 但如果真的想要端到端测试您的应用并希望直接检查对AJAX操作的HTTP响应,您应该使用将记录所有响应的代理。然后,您可以搜索这些回复。 Selenium维护者建议使用Browsermob proxy to do something like thisHere are Ruby bindings for it由Selenium的Ruby绑定维护者编写