在JAVA上从浏览器读取GET / POST请求

时间:2016-03-18 18:02:44

标签: java selenium-webdriver

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

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

你能帮我解决一下吗?

2 个答案:

答案 0 :(得分:0)

  1. Chrome本身带有devtools。刚刚点击F12'。 https://developer.chrome.com/devtools

  2. Postman,它对测试Web服务和API非常有用 https://www.getpostman.com/

答案 1 :(得分:0)

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

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

显然,您可以自动执行此操作,安排Selenium测试运行,并使用您自己的Java代码生成您自己的自定义指标;将HAR管道输入一个JSON-savvy数据库,用于查询(比如Elasticsearch)和可视化,或者只保存HARs以进行离线查询和差异化。

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/来可视化输出。这应该会给你一些看起来非常类似于网络选项卡的内容,但其格式更容易导出,截图和打印。