Postman進行接口測試時,返回的是部分html代碼時,我們需要其中的數據進行下一個接口使用,這是需要我們編寫腳本來獲取某些返回數據。
它支持的時JS腳本,本人不太精通,自己百度學習參考得來的方法,還請大神勿噴和優化指教。
1、編寫接口相關信息
將接口路徑和參數等配置好,確保訪問成功並有相應的html返回值。
2、在Tests面板編寫腳本
1)打開請求的Tests面板,根據返回的html進行分析編寫腳本,一定要分析好html的標簽分層,比如div的下層時div還是ul,以及對應同級的多個div或ul需要用div[i]來表示。
2)返回的html代碼
1111
瀏覽器顯示為這樣。
3)根據html編寫的腳本代碼如下,僅供參考:
//獲取列表下某個分類存在的id
var jsonObject = xml2Json(responseBody);//將html轉化為json格式
pm.globals.set("exist_id", JSON.stringify(jsonObject.div.ul[0].div.a.$.catalogId));//將json中的某值轉化string賦值給變量,對應路徑div>a>ul[0]>div>a>$>catalogId
console.log("存在的第一個id:"+pm.variables.get("exist_id"))//控制台輸出變量值
var jsonObject = xml2Json(responseBody);//將html轉化為json格式
pm.globals.set("exist_id", JSON.stringify(jsonObject.div.ul[0].div.a.$.catalogId));//將json中的某值轉化string賦值給變量,對應路徑div>a>ul[0]>div>a>$>catalogId
console.log("存在的第一個id:"+pm.variables.get("exist_id"))//控制台輸出變量值
pm.globals.set("ul_html", jsonObject.div.ul);//將div下ul的html代碼轉化為json賦值給變量
var str_html = pm.variables.get("ul_html") //將postman變量賦值為js對象
var str_html = pm.variables.get("ul_html") //將postman變量賦值為js對象
function count(o){ //定義方法獲取相同html標簽的個數,(比如a標簽數量)
var t = typeof o;
if(t == 'string'){
return o.length;
}
else if(t == 'object'){
var n = 0;
for(var i in o){
n++;
}
return n;
}
return false;
}
var id_count = count(str_html);//定義變量獲取個數
var t = typeof o;
if(t == 'string'){
return o.length;
}
else if(t == 'object'){
var n = 0;
for(var i in o){
n++;
}
return n;
}
return false;
}
var id_count = count(str_html);//定義變量獲取個數
console.log("列表下分類數量:"+id_count);
var id_dict = []; //定義一個數組存放數據,(如需轉化為數字,使用parseInt(str)函數)
for (i=0;i<id_count;i++){ //循環將多個分類的id和分類名以字段{}形式存放到id_dict
var id = jsonObject.div.ul[i].div.a.$.catalogId //獲取標簽內的catalogId屬性值,即id
var value = jsonObject.div.ul[i].div.a._ //獲取標簽內的text值,即分類名
id_dict.push({id,value}); //存放進入
}
console.log((id_dict)); //打印整個數組
console.log("匹配str('7')是否存在:存在返回下面的一個list ")
console.log(responseBody.match("7"))//此方法用來匹配str_html中是否存在某個id
console.log(responseBody.match("7"))//此方法用來匹配str_html中是否存在某個id
//這是將id_list中的某個值取出定義為postman變量並打印
var id = id_dict[0].id
pm.environment.set("id", id);
console.log("第一個id值"+pm.environment.get("id"))
pm.environment.set("id", id);
console.log("第一個id值"+pm.environment.get("id"))
4)下一個接口調用
將某個需要的id賦值給postman的一個環境變量,然后下一個接口直接引用postman的這個變量名就行。
控制台結果如下圖:

參考鏈接:
https://www.cnblogs.com/sunnywindycloudy/p/7382226.html
https://jlhxxxx.github.io/postman-start.html
https://blog.csdn.net/nikita1995/article/details/81284984
https://www.cnblogs.com/zoraliu66/p/6566598.html