录制har文件
最后更新于:2022-04-01 09:43:31
> 如有转载,请注明来源与`testerhome.com`
昨天我们用selenium自动化的方式,获得了har文件,今天我们找一个普通,不懂代码的业务测试也能录制case的方式
## 原理
原理是用`browsermob-proxy`可执行文件作为本地代理,监听某个端口,然后在系统中设置web服务器的代理url,让每一次的web请求都先走我们本地的代理,这样数据会先在代理服务器上保存数据,我们通过RESTAPI获得这些har数据保存到本地
## 步骤
### 启动代理服务
上一篇[文章](http://blog.csdn.net/itfootball/article/details/50517659)的结尾,我讲解了如何安装启动`browsermob-proxy`服务器,默认你已经看过那篇文章了,现在我们启动该服务,命令为`sh browsermob-proxy -port 9090`,启动后

如果是上图,信息表明我们的服务已经启动了,记住我们启动的端口,后续会用到。
### 创建代理
代理服务启动后,代理的实例还没有创建成功,需要我们自己创建一个,创建方式是通过`REST api`的方式,命令为`curl -X POST -d 'port=9099' http://localhost:9090/proxy`,其中红框标注的为我们刚才启动代理服务的端口号,参数`-d`后面的`9099`是我们代理的端口号,这个一定要理解清楚,命令执行成功后出返回一个`json`字符串,里面包含了`port`字段就是你设置的代理端口号。

创建成功后,在服务器端会输出如下信息:

### 设置系统代理
用`Chrome`浏览器打开[代理设置](http://jingyan.baidu.com/article/15622f2474b91cfdfcbea501.html),我用的是`mac`,会弹出代理设置

将`web`的两项设置全部进行如下更改,里面的信息要安装服务器显示的`host`和端口号来填。
- Web代理[HTTP]

- 安全Web代理(HTTPS)

设置完成后记得保存,如果你不想设置系统代理,看另外一种插件式的代理
### 浏览器插件设置代理
`SwitchySharp`插件,添加到`chrome`后,进行配置

这样我们勾选后,就能让浏览器走代理了

现在我们在浏览器上访问的时候,会发现服务器是有反应的。
建议使用浏览器插件的方式设置代理,这样不影响其他的上网需求。
### 创建HAR进行数据记录
现在我们开启我们的代理服务器,以及开启了`9099`端口的代理,而且将浏览器的代理设置成这个`9099`端口的代理,现在我们的网络访问就会走`9099`这个代理了。
### 开启录制
命令:`curl -X PUT -d 'initialPageRef=Doctorq' http://localhost:9090/proxy/9099/har`上面的命令将这次录制的`case`页面名称定为了`Doctorq`,这样我这条`case`就可以通过`Doctorq`来找到,这个命令执行后,我们的录制功能已经开启了,这个时候你在网页上的请求,就会被我们的代理捕获,数据也会被保存。
### 获取HAR信息
命令:`curl http://localhost:9090/proxy/9099/har`,这个时候命令行会输出`har`的信息:

如果你觉得看的不太清楚,你可以通过保存到本地文件:

这样我们可以在har查看工具中查看该文件的信息:

## SSL
对于`https`的请求,需要自己安装`ssl`证书。