1

在我正在测试的网页上,当用户单击选择列表中的选项时会进行 GET 调用。GET 看起来像这样:

GET /mediaportal/captions/SCH/Follow%20Up%20with%20the%20Robles%20Family_SCH.xml 

如何告诉 Ruby 侦听 GET 请求并捕获它,或者更具体地说,捕获并将上面 GET 中请求的 url 放入变量中。

我正在使用 watir-webdriver gem,我希望里面有一些东西可以让我这样做。

4

3 回答 3

5

尝试 net/http 宝石:

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

于 2012-05-22T22:48:03.717 回答
3

好的 - 我做了一些更多的研究,结果发现 webrick Web 服务器捆绑了一个 HTTP 代理。(使用 Ruby 的常见经验 - 解决方案通常比预期的更接近。)这个问题的答案很好地总结了它,并指向一篇博客文章,其中给出了如何做到这一点的代码示例。

您使用 WEBrick::HTTPProxyServer 启动服务器,然后您应该能够拦截所有流量。一个挑战可能是通过您的测试代码与该服务器进行交互。如果不设置某种服务器,可能很难做到这一点。但是,如果您只想监听特定呼叫,那么您可以将服务器作为测试套件的一部分启动,然后在呼叫出现时将其关闭。

于 2012-05-23T05:21:03.810 回答
3

我认为让 http 流量通过代理可能是您处理此问题的最简单方法。或者忽略功能级别测试幕后的 api,并专注于 UI 在从该请求获得响应时发生的任何事情。如果您需要测试 REST api itef,请编写在 API 级别工作的单独 API 测试自动化。

http 代理服务器的这个要点可能是您可以使用的东西

如果你想直接测试 REST API,我推荐使用REST-Client gem。如果流量是 JSON 格式,那么JSON-spec gem也是一个救星,特别是如果您需要一个用于 rspec/cucumber 验证步骤(.should 匹配器和 cucumber 'then' 步骤)的优秀库。 我做了一个关于使用 cucumber 和这两个用于在测试自动化集市上进行 API 测试的宝石……我第一次展示这些东西,(我应该有时间制作幻灯片,但希望那里的内容至少能让您大致了解如何开始。)

于 2012-05-23T07:35:15.213 回答