在我正在测试的网页上,当用户点击选择列表中的选项时,会进行GET调用。 GET看起来像这样:
GET /mediaportal/captions/SCH/Follow%20Up%20with%20the%20Robles%20Family_SCH.xml
如何告诉Ruby监听GET请求并捕获它,或者更具体地说,捕获并将上面GET中请求的url放入变量。
(我正在使用watir-webdriver gem,我希望那里有一些东西可以让我这样做。)
答案 0 :(得分:5)
试试net / http gem:
require 'net/http'
uri = URI('http://yoursite.com/mediaportal/captions/SCH/Follow%20Up%20with%20the%20Robles%20Family_SCH.xml ')
Net::HTTP.get(uri) # => String
有关详细信息,请尝试此处: http://ruby-doc.org/stdlib-1.9.3/libdoc/net/http/rdoc/Net/HTTP.html
答案 1 :(得分:3)
好的 - 我做了一些研究,结果发现有一个与webrick网络服务器捆绑在一起的HTTP代理服务器。 (Ruby的一个常见经验 - 解决方案通常比预期更接近。)this question的答案很好地总结了它并指向a blog post,它给出了如何做到的代码示例。
使用WEBrick :: HTTPProxyServer启动服务器,然后您应该能够拦截所有流量。挑战可能是从您的测试代码与此服务器进行交互。如果不设置某种服务器,可能很难做到这一点。但是,如果您只是想听一个特定的呼叫,那么您可以将该服务器作为测试套件的一部分启动,然后在呼叫出现时将其关闭。
答案 2 :(得分:3)
我认为让http流量通过代理可能是解决这个问题的最简单方法。那或忽略功能级别测试幕后的api,并关注当UI从该请求获得响应时在UI中发生的任何事情。如果您需要测试REST api,请编写在API级别工作的单独API测试自动化。
此gist of an http proxy server可能是您可以使用的工作
如果您想直接测试REST API,我建议使用REST-Client gem。如果流量采用JSON格式,JSON-spec gem也是一个救生员,特别是如果你需要一个很棒的库来进行rspec /黄瓜验证步骤(。应该匹配和黄瓜然后'步骤。)I gave a presentation使用黄瓜和那两个在测试自动化市场进行API测试的宝石..我第一次介绍这些东西,(我应该已经找到了制作幻灯片的时间,但希望有什么能让你至少大致了解如何开始。)