没有用过Fiddler的人应该对FiddlerScript没啥感触,我是真心觉得FiddlerScript对测试有一定的帮助哈。
在web前端开发过程中,Fiddler是最常用的一款调试工具,那对于测试来说,对测试来说也是一大利器。在大多数情况下,通过Fiddler的菜单就可以满足我们基本的使用,但是涉及比较复杂的场景,通过fiddler基本菜单无法满足。这时候就可以利用FiddlerScript,
1通过断点可以修改http请求和相应的数据,不过不可以更改http头部,url,http相应码等等,所以这时候FiddlerScript就可以爬上用场了。
2因为设置断点更改http请求数据,手动查找参数,输入,点击重新启动按钮,这一系列的动作就耗费一定的时间,有时候前段判断响应的时间比较短,还没来得及修改完,响应时间超时,那么更改无效,所以这时候FiddlerScript实现自动修改就爬上用场了。
下面介绍贴上我常用的FiddlerScript ,OnBeforeRequest部分
//更改http头文件,两种方式都可以
if (oSession.uriContains("172.16.0.62")) {
oSession.oRequest.headers["lat"]="22.547";
//oSession.oRequest["lon"] = "114.125";
}
//移除某个头文件
if (oSession.uriContains("objectId=1")) {
oSession.oRequest.headers.Remove["lat"];
}
//增加头文件
if (oSession.uriContains("172.16.0.61")) {
oSession.oRequest.headers.Add("lat","22.548")
}
//host 是要写完整
if (oSession.host == "hstoa.wisdom-gps.com:8888") {
}
if (oSession.uriContains("172.16.0.61")) {
oSession["ui-color"] = "winered";
}
//修改get请求url
if (oSession.uriContains("C_Account/LogOn")){
var geturl = oSession.url
geturl=geturl.Replace("111111","222222");
oSession.url = geturl;
}
//修改post请求的boby
var strBody=oSession.GetRequestBodyAsString();
// 用正则表达式或者replace方法去修改string
strBody=strBody.replace("1111","2222");
// 弹个对话框检查下修改后的body
FiddlerObject.alert(strBody);
// 将修改后的body,重新写回Request中
oSession.utilSetRequestBody(strBody);
//将请求URI中http协议替换成https协议
oSession.fullUrl = "https" + oSession.fullUrl.Substring(oSession.fullUrl.IndexOf(‘:‘));
常用的OnBeforeResponse部分:
//增加响应头
if (oSession.uriContains("C_Account/LogOn")) {
oSession.oResponse.headers.Add("test1","11111")
}
//修改响应头
if (oSession.uriContains("C_Account/LogOn")) {
oSession.oResponse.headers["Date"] = "Wed, 27 Oct 2016 03:11:15 GMT";
}
//移除响应头
if (oSession.uriContains("C_Account/LogOn")) {
oSession.oResponse.headers.Remove["Date"] ;
}
//修改http状态码
if (oSession.uriContains("C_Account/LogOn")) {
oSession.responseCode = "404"
}
//修改响应boby,如修改Result值1更改为2
if (oSession.uriContains("C_Account/LogOn")) {
var bobystr = oSession.GetResponseBodyAsString();
bobystr = bobystr.Replace("\"Result\":1","\"Result\":2");
oSession.utilSetResponseBody(bobystr);
}
//响应状态标识颜色
if (oSession.uriContains("C_Account/LogOn")) {
var reponseboby = oSession.GetResponseBodyAsString()
if (reponseboby.Contains("\"Result\":0")) {
oSession["ui-color"] = "blue";
}
}