最近一段時間,團隊來了一些新的測試小夥伴,但發現你們對Fiddler的用法還都比較基礎,所以總結了一些我我的經常使用的稍微高級的用法給你們,以便你們發散思考,經過對Fiddler的定製,提升測試效率和測試技巧。web
1. 雙擊Session時,使響應頁始終顯示到」json」tab頁;使請求頁始終顯示到「webform」tab頁
在QUICK EXEC命令執行窗口,執行chrome
PREFS SET fiddler.ui.inspectors.response.alwaysuse "json"
PREFS SET fiddler.ui.inspectors.request.alwaysuse "WebForms"
2. 顯示每一個Session 的請求IP地址
打開Fiddlerscript 在main()中寫與如下代碼:json
FiddlerObject.UI.lvSessions.AddBoundColumn("ServerIP", 120, "X-HostIP");
3. 修改響應Header中的Content-Type
打開Fiddlerscript在onBeforeResponse()中添加瀏覽器
// 若是host中包含tugele,把響應Content-Type修改成 json類型
if (oSession.host.Contains("tugele")){
oSession.oResponse["Content-Type"] = "application/json;charset=UTF-8";
}
4. 右鍵session 直接使用瀏覽器打開url
打開Fiddlerscript,在class Handler中添加微信
public static ContextAction("Open in Chrome")
function DoOpenInIE(oSessions: Fiddler.Session[]){
if (null == oSessions){
MessageBox.Show("Please choose at least 1 session."); return;
}
for (var x = 0; x < oSessions.Length; x++){
//執行cmd 命令
System.Diagnostics.Process.Start("chrome.exe", oSessions[x].url);
}
}
5. Session列中,顯示每一個請求的響應時間
打開Fiddlerscript,在class Handler中添加session
public static BindUIColumn("TimeTaken/ms", 120)
function TimeTaken(oS: Session):String{
var sResult = "0";
var t1_ms = oS.Timers.ClientBeginResponse.ToUniversalTime().Millisecond;
var t1_m = oS.Timers.ClientBeginResponse.ToUniversalTime().Minute;
var t1_s = oS.Timers.ClientBeginResponse.ToUniversalTime().Second;
var t1 = t1_m*60*1000 + t1_s*1000 + t1_ms;
var t2_ms = oS.Timers.ClientDoneRequest.ToUniversalTime().Millisecond;
var t2_m = oS.Timers.ClientDoneRequest.ToUniversalTime().Minute;
var t2_s = oS.Timers.ClientDoneRequest.ToUniversalTime().Second;
var t2 = t2_m*60*1000 + t2_s*1000 + t2_ms;
if(t1 >= t2){
var t3 = t1 - t2;
sResult = t3.toString();
}
return sResult;
}
6. 發送請求時,攔截並修改請求的url
打開Fiddlerscript在onBeforeRequest()中添加app
// 指定包含 biaoqing 的url,替換url中的字符串
if (oSession.fullUrl.Contains('biaoqing')){
if (oSession.fullUrl.Contains('abc')){
oSession.fullUrl = oSession.fullUrl.Replace('abc','bcd');
}
// 在fiddler log中查看實際的請求
FiddlerObject.log(oSession.fullUrl);
}
7. 模擬弱網環境
菜單欄,打開 Rules > Performance > Simulate Modem speed 開關
打開Fiddlerscript ,修改如下代碼中的閾值,調整上下行流量的延遲時間,單位是mspost
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "550";
}
8. 獲取上一個請求的響應內容,做爲下一個請求的Body,並使用Fiddler構造該請求
打開Fiddlerscript,在onBeforeRequest()中添加測試
//解密開關每次打開關閉都要去腳本中修改不太方便,所以把解密開關配置在Fiddler UI菜單欄中
public static RulesOption("Dectryt tugele")
var tgl: boolean = true;
static function OnBeforeResponse(oSession: Session) {
//tgl爲解密開關,配置在UI RULES選項卡中
if (oSession.host.Contains("tugele") && tgl){
//獲取請求的響應內容string
var oBody: String = oSession.GetResponseBodyAsString();
var eBody: String = "content=" + encodeURIComponent(oBody);
//把String 轉爲 byte[]類型
var Content: byte[] = System.Text.Encoding.UTF8.GetBytes(eBody);
//構造一個header對象
var oRQH: HTTPRequestHeaders = new HTTPRequestHeaders("/tools/decrypt", ['User-Agent: Fiddler','Host: test.example.com','Content-Length: '+Content.length.ToString(), 'Content-Type: application/x-www-form-urlencoded']);
//定義請求方法爲post
oRQH.HTTPMethod = "POST";
//定義oSD(參數須要,通常爲空)
var oSD = new System.Collections.Specialized.StringDictionary();
//發送請求,生成一個新session
FiddlerApplication.oProxy.SendRequestAndWait(oRQH, Content, oSD, null);
}
}
以上就是我總結的一些方法,但願對你們能有所幫助,固然 Fiddler 還有不少其它高級的用法值得探索,也期待你的分享。
ui
本文分享自微信公衆號 - 搜狗測試(SogouQA)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。