4

我正在寻找一种可能性,可以使用无头浏览器轻松访问和列出网页文档开始加载后加载的所有资源:脚本、图像、样式表等。我对文件的 url、状态码和类型等感兴趣。

想办法以编程方式访问Network选项卡(开发人员工具)为您提供的信息:

在此处输入图像描述

有谁知道 Ruby 库可以帮助我解决这个问题,或者——甚至更好——是否有办法使用 Capybara(–webkit) 来实现这一点?


更新

似乎Poltergeist 有一个名为的方法network_traffic,它可以满足我的需求。不过还没有时间去研究。一旦我这样做,我会报告。

4

3 回答 3

3
于 2012-10-23T11:14:04.587 回答
0

在 Capybara 测试期间您想要这些信息似乎很奇怪。编写 UI 测试以反映实际用户行为是一种很好的做法。

考虑一个使用 AJAX 更新页面上的文本块的按钮。您可以单击按钮,然后检查请求是否发生并检查返回值。但是您最好像用户一样对其进行测试:单击按钮,等到文本块更改,然后确认它现在显示预期的文本。

如果你真的想捕获网络流量,我会让你的测试设置一个透明的 HTTP 代理,通过它连接,并在事后检查请求日志。

我的团队在 Capybara 测试期间使用类似的方法来模拟与 Internet 的断开连接。我们使用的 Firefox 配置文件被配置为指向在每个功能开始时启动的透明代理。这样我们就可以编写如下场景:

Given I am online
 When I do something
  And I am offline
 Then something doesn't break

...am onlineam offline步骤只是打开和关闭代理。

于 2012-10-16T01:19:30.803 回答
0

以@polarblau 的回应为基础

您可以在测试代码中设置调试断点并运行...

page.driver.network_traffic.each { |request| request.response_parts.uniq(&:url).each { |response| puts "#{response.url}: #{response.status}" }}

不同的是你不需要启动一个新的浏览器,并且可以看到你的页面加载了什么。

于 2015-07-08T02:30:41.747 回答