前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试平台代码实现59-首页重构7

接口测试平台代码实现59-首页重构7

作者头像
我去热饭
发布2022-05-19 09:10:20
4570
发布2022-05-19 09:10:20
举报
文章被收录于专栏:测试开发干货

本节基本就是最后一节,上节我们本来以为很简单的重构,结果遇到了恶心的第三方组件bug,所以我就用刷新套路来绕过了这个问题,还省去了clear清空函数,顺便给大家讲了下新增的第二万能参数ooid。在最后我们解决了url,host,header的显示问题。本节就剩处理一下 请求方式/请求体类型/请求体了。

打开我们的home.html,在下图位置新建一个script,记住,是script,并不是一个js函数,如果是js函数的话我们必须要调用才能触发,而我们直接把js代码写在外面,那就会一进入这个页面就会触发了。

我们先来处理请求体类型:

代码含义:先判断进来的这个api_method 是不是空的,如果不是,那么它的值一定是post/get/put/delete ,恰好符合我们这个请求方式select下拉框的value,所以直接赋值就可以实现。

然后继续:

(代码较多,大家复制即可)

代码语言:javascript
复制
<script>
    // 自动设置请求类型
    if( "{{ log.api_method }}" != ''){
        document.getElementById('ts_method').value = "{{ log.api_method }}";
    }
    //请求体类型 //请求体
    if("{{ log.body_method }}" != ''){
        console.log("{{ log.body_method }}");
        console.log("{{ log.api_body }}");

        var body_method = '#'+"{{ log.body_method }}";
        $("li a[href="+body_method+"]").click();

        if("{{ log.body_method }}" == 'Text'){
            document.getElementById('raw_Text').value = "{{ log.api_body }}";
        }
        if("{{ log.body_method }}" == 'JavaScript'){
            document.getElementById('raw_JavaScript').value = "{{ log.api_body }}";
        }
        if("{{ log.body_method }}" == 'Json'){
            document.getElementById('raw_Json').value = "{{ log.api_body }}";
        }
        if("{{ log.body_method }}" == 'Html'){
            document.getElementById('raw_Html').value = "{{ log.api_body }}";
        }
        if("{{ log.body_method }}" == 'Xml'){
            document.getElementById('raw_Xml').value = "{{ log.api_body }}";
        }
        if("{{ log.body_method }}" == 'form-data'){
            var tbody = document.getElementById('mytbody'); // 定位表格中的tbody部分
            body = eval("{{ log.api_body }}"); //把这个像列表的字符串请求体变成真正的列表
            for(var i=0;i<body.length;i++){ // 遍历这个请求体列表
                key = body[i][0]; //拿出每一个键值对的key
                value = body[i][1];//拿出每一个键值对的value
                var childs_tr = tbody.children ;//获取到这个表格下面所有的tr组成的大列表
                // 每个tr下的children得到的是 td列表,只有俩个。
                childs_tr[i].children[0].innerText = key; //第一个td放key
                childs_tr[i].children[1].innerText = value;//第二个td放value
                //判断是否是最后一次遍历,来决定是否点击新增参数按钮
                if(i<body.length-1){
                    document.getElementById('add').click()
                }
            }
        }
        if("{{ log.body_method }}" == 'x-www-form-urlencoded'){
            var tbody = document.getElementById('mytbody2'); // 定位表格中的tbody部分
            body = eval("{{ log.api_body }}"); //把这个像列表的字符串请求体变成真正的列表
            for(var i=0;i<body.length;i++){ // 遍历这个请求体列表
                key = body[i][0]; //拿出每一个键值对的key
                value = body[i][1];//拿出每一个键值对的value
                var childs_tr = tbody.children ;//获取到这个表格下面所有的tr组成的大列表
                // 每个tr下的children得到的是 td列表,只有俩个。
                childs_tr[i].children[0].innerText = key; //第一个td放key
                childs_tr[i].children[1].innerText = value;//第二个td放value
                //判断是否是最后一次遍历,来决定是否点击新增参数按钮
                if(i<body.length-1){
                    document.getElementById('add2').click()
                }
            }
        }
    }
</script>

好了我们现在可以刷新页面测试了

经过测试,发现除了form-data/x-www...之外的 记录都可以正常刷新并显示出来。 但是form-data这种类型却报错了。

看到原因,是我们的二维数组当中的 引号居然传过来就变成了&quot; 这就是被转码了成为特殊字串了。

导致我们js的eval 无法解析报错。

在后台我们打印发现 并没有问题。

那么前端要怎么处理呢?其实有很多办法。

比如正则替换:把所有&quot;都换成双引号。

g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。

m 执行多行匹配。

好了再试试,发现可以正常了。

好了本节基本结束。作者会经常无意埋下一些坑,然后再讲解解决办法的时候引入新的小技巧。请别见怪!作者就是踩了无数个坑,然后埋上土爬出来 才走到今天的。希望大家理解。

首页明天才是最后一节课,会解决几个小bug,异常处理,还有稍微美化一下。(什么?开头不是说了本节就是最后一节了?不不不,仔细看我说的是基本是最后一节)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发干货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档