开发者社区> 游客pxprrm2iipsfu> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

接口测试平台代码实现107:登录态接口-3

简介: 接口测试平台代码实现107:登录态接口-3
+关注继续查看

 首先先改正一下 榜一大哥提出的bug,就是当选择完公共请求头后取消选择,然后再请求就会报错的问题:

在views.py中进行改正,在Api_send函数中加了一个if判断:if i !='' :    微信图片_20220703190458.png

这里再次感谢

微信图片_20220703190517.png

欢迎其他小伙伴踊跃提出bug,这可是出名的好机会呀~

本节我们加快速度和内容,继续讲登陆态接口部分。在我们开发script部分之前,我们需要先去数据层,去构建出这个登陆态的表,然后通过views.py把相关数据带给前端html,然后才能去html中完善script部分。

   打开models.py,增加下列类:微信图片_20220703190525.png

这就是我们的项目登陆态接口记录表。

然后执行俩句命令同步给数据库:

微信图片_20220703190534.png

然后去admin.py中注册:

微信图片_20220703190540.png

然后我们现在回到html中,也就是P_apis.html中:

找到这个login_show 函数:

微信图片_20220703190618.png

然后我们去url.py中加入这个获取链接:

微信图片_20220703190627.png

最后去views.py中搞定这个函数:

微信图片_20220703190633.png

我们重启服务,刷新页面,打开登陆态接口发现没报错,即可。

我们现在可以去后台,记住自己的项目id,在后台新建一个符合的项目登陆态接口记录:

微信图片_20220703190641.png

然后我们再试试看:微信图片_20220703190648.png

如上图,打开登陆态设置页面的时候,就可以看到consoloe.log中输出的内容。


    然后我们继续写这个打开页面的js函数,给拿到的数据 都展示到设置页面上:

微信图片_20220703190659.png

   其中全部进行了加login_的设置,因为代码量大且极易出错,所以现在给大家可以复制的代码:

function login_show() {
    //显示蒙层,并设置好蒙层的层级关系,让其在调试层之下,其他元素之上
    document.getElementById('mengceng').style.display='block';
    document.getElementById('mengceng').style.zIndex='998';
    document.getElementById('login_set_div').style.zIndex='999';
    document.getElementById('login_set_div').style.display = 'block';
    $.get("/project_get_login/",{
        "project_id":"{{ project.id }}"
    },function (ret) {
        console.log(ret);
         // 运行第三方表格插件的函数:
        $('#login_mytable').SetEditable({
            $addButton: $('#login_add'),
        });
        $('#login_mytable2').SetEditable({
            $addButton: $('#login_add2'),
        });
        document.getElementById('login_method').value = ret.api_method;
        document.getElementById('login_url').value = ret.api_url;
        document.getElementById('login_host').value = ret.api_host;
        document.getElementById('login_header').value = ret.api_header;
        document.getElementById('login_response_set').value = ret.set;
        // 请求体编码格式
        var body_method = '#'+ret.body_method;

        $("li a[href="+body_method+"]").click();
        // 请求体显示
        if(ret.body_method == 'login_Text'){
            document.getElementById('login_raw_Text').value = ret.api_body;
        }
        if(ret.body_method == 'login_JavaScript'){
            document.getElementById('login_raw_JavaScript').value = ret.api_body;
        }
        if(ret.body_method == 'login_Json'){
            document.getElementById('login_raw_Json').value = ret.api_body;
        }
        if(ret.body_method == 'login_Html'){
            document.getElementById('login_raw_Html').value = ret.api_body;
        }
        if(ret.body_method == 'login_Xml'){
            document.getElementById('login_raw_Xml').value = ret.api_body;
        }
        if(ret.body_method == 'login_form-data'){
            var tbody = document.getElementById('login_mytbody'); // 定位表格中的tbody部分
            body = eval(ret.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('login_add').click()
                }
            }
        }
        if(ret.body_method == 'login_x-www-form-urlencoded'){
            var tbody = document.getElementById('login_mytbody2'); // 定位表格中的tbody部分
            body = eval(ret.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('login_add2').click()
                }
            }
        }
        if(ret.body_method == "login_GraphQL"){
            body_plan_G_Q =  ret.api_body.split('*WQRF*')[0];
            body_plan_G_G =  ret.api_body.split('*WQRF*')[1];
            document.getElementById('login_body_plan_G_Q').value =body_plan_G_Q;
            document.getElementById('login_body_plan_G_G').value = body_plan_G_G;
        }
    })
}


然后刷新页面,再打开登陆态设置看看:

微信图片_20220703190708.png微信图片_20220703190717.png

最后我们再加入取消按钮的js函数:

微信图片_20220703190723.png

这回就可以用刷新页面的方法关闭这个设置层了。


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
接口测试平台代码实现111:登录态接口-7
接口测试平台代码实现111:登录态接口-7
13 0
接口测试平台代码实现110:登录态接口-6
我们上节课,前端已经成功拿到了 登陆态接口调试发送的运行结果,也就是返回值 和 提取结果。 如果确认提取结果没问题,我们就切换到请求体tab然后点击保存按钮。就成功保存了。
11 0
接口测试平台代码实现139:不同项目大用例登陆态干扰bug测试
虽然上节课我们准备好了测试数据,但是本节我们要想想如何来测,从哪看结果等问题。
17 0
接口测试平台代码实现131: 全局变量-10
本节开始要进入比较烧脑的阶段了,请系好安全带,中途跳车的请刷卡。
11 0
接口测试平台代码实现114:登录态接口-10
本节会继续嵌入到用例库中。 要做的事情有以下几点: 1.用例库-大用例-步骤小用例 的设置页面上,加入一个个的登陆状态开关,方法和接口库调试层类似 2.在后端实际去调用接口的小用例方法中,加上关于登陆态的判断/获取/加入url等,实现和接口库调试功能类似 3.未避免一个用例中多次调用登陆接口,所以设计临时缓存字段功能。只有第一个需要加登陆态的接口会真的去访问登陆接口,取回的字段会直接被后续接口使用。
16 0
接口测试平台代码实现124: 全局变量-3
接口测试平台代码实现124: 全局变量-3
19 0
接口测试平台代码实现71: 多接口用例-11
好的因为群内大佬打赏的钱太多,所以履行承诺,加更一节: 本节主要处理掉,这个步骤保存的功能,其实对于跟到现在的同学来说,业务上的curd早就已经轻车熟路了。本节节奏稍快:
25 0
接口测试平台代码实现80: 多接口用例-20
接口测试平台代码实现80: 多接口用例-20
18 0
接口测试平台代码实现62: 多接口用例-2
好了,最近水了好多期,终于要写点代码了。 本节内容,我们搞定这个多接口的大用例 列表相关吧,难度基本为0,都是我们之前用到过的。
21 0
接口测试平台代码实现81: 多接口用例-21
接口测试平台代码实现81: 多接口用例-21
19 0
+关注
游客pxprrm2iipsfu
我去热饭
435
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载