zoukankan      html  css  js  c++  java
  • Postman提取html返回值

    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"))//控制台输出变量值
    pm.globals.set("ul_html", jsonObject.div.ul);//将div下ul的html代码转化为json赋值给变量
    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);//定义变量获取个数
    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
    //这是将id_list中的某个值取出定义为postman变量并打印
    var id = id_dict[0].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

      

  • 相关阅读:
    [LeetCode 1029] Two City Scheduling
    POJ 2342 Anniversary party (树形DP入门)
    Nowcoder 106 C.Professional Manager(统计并查集的个数)
    2018 GDCPC 省赛总结
    CF 977 F. Consecutive Subsequence
    Uva 12325 Zombie's Treasure Chest (贪心,分类讨论)
    Poj 2337 Catenyms(有向图DFS求欧拉通路)
    POJ 1236 Network of Schools (强连通分量缩点求度数)
    POJ 1144 Network (求割点)
    POJ 3310 Caterpillar(图的度的判定)
  • 原文地址:https://www.cnblogs.com/fxcity/p/11055463.html
Copyright © 2011-2022 走看看