我需要找到一种从WEB浏览器(网络)读取GET / POST请求并检索诸如状态,域,大小,IP和最重要的时间轴之类的信息的方法。

这样做的主要目的是衡量在Web页上的每个操作之后的请求计数及其执行时间。这也将帮助我知道要在WEB页面上执行任何操作之前是否正在执行任何请求(AJAX / JavaScript)。

您能帮我解决问题吗?

最佳答案

假设您不想将自己绑定到特定的浏览器(通过插件或特定的开发工具栏),则需要捕获来自交互式用户事件的响应(即通过在真实浏览器中模拟使用网站,而不是动态创建的HTTP调用),并且需要自动执行此操作,那么代理服务器便是您的最佳选择。

可以将Browsermob之类的内容设置为proxy for all Selenium流量。它可以捕获所有请求和响应的全部内容,并让您生成一个(跨浏览器)HAR file,然后可以通过API对其进行持久化,可视化或查询。

显然,您可以自动执行此操作,安排Selenium测试运行,并使用自己的Java代码生成自己的自定义指标;通过管道将HAR传输到支持JSON的数据库中进行查询(例如Elasticsearch)和可视化,或者仅保存HAR以便进行离线查询和差异化。

tests中的一些示例代码:

[...]
proxy.newHar("Test");

HttpGet get = new HttpGet(getLocalServerHostnameAndPort() + "/a.txt?foo=bar&a=1%262");
client.execute(get);

Har har = proxy.getHar();
HarLog log = har.getLog();

List<HarEntry> entries = log.getEntries();

HarEntry entry = entries.get(0);
HarRequest req = entry.getRequest();
[...]


或者,您可以通过获取字符串形式的HAR并将其粘贴到http://www.softwareishard.com/har/viewer/中来可视化输出。这应该使您看起来与“网络”选项卡非常相似,但是格式更易于导出,截屏和打印。

10-06 13:02