跨所有浏览器捕获Web驱动程序网络流量

时间:2014-02-18 14:29:35

标签: selenium proxy selenium-webdriver tcpmon browsermob

我想从Java中捕获Web驱动程序的所有网络调用。我没有进行任何UI测试,只测试JS执行以及某些网络调用的请求和响应。

我尝试使用大多数论坛中建议的Browser Mob,但我需要它可以在所有浏览器中使用。它与Firefox完美配合,但我遇到了其他问题。 Safari驱动程序没有事件支持代理功能。

我不想使用Fiddler,因为它涉及调用和存储调用的一些手动步骤。然而,作为代码内代理的Browser Mob可以以更平滑的方式集成。

我也尝试使用Selenium独立服务器软件包中包含的类似RC的软件包。但是,我在跨域中有一些HTTPS调用和一些嵌套的iframe。我对一些跨域POST调用特别感兴趣,但它并没有很好地解决这个问题。此外,人们一直说它不建议使用该包。

所以,我有一个解决方案,我们可以使用在机器上运行的独立代理服务器。使用主机条目,我们将Web驱动程序指向代理而不是实际服务器。代理将记录所有传入呼叫并将它们路由到实际的服务器主机。稍后,我可以向代理发出请求,该代理将返回它截获的所有呼叫。我不确定它是否仍称为代理或路由器。

我遇到了TCPmon,但它不再被支持了。有没有人知道可以在Unix系统或任何替代解决方案上运行的类似工具?

1 个答案:

答案 0 :(得分:0)

我们修改了Fiddler规则脚本以包含新的exec操作。如果您使用他们的原生脚本编辑器,它还提供自动完成功能,我们可以轻松地绕过它。语法类似于JavaScript。 Fiddler软件包附带一个ExecActions.exe,可以使用命令提示符将控制台参数传递给正在运行的Fiddler实例。 我们编写的代码处理了Fiddler捕获的所有会话,并以自定义JSON格式将其写入文件,然后使用GSON对其进行反序列化。 如果您需要更多详细信息,请与我们联系。