eolinker流程用例步骤之脚本代码[Javascript]:读取多组数据,循环执行同一操作
特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html
场景(一)描述:
在未知有多少会员卡的前提下,对会员卡进行禁用操作。问题的关键是,会员卡种类数未知,且只能通过获取会员卡后,判断会员卡数,且禁用操作需要获取接口返回id来实现对会员卡的禁用

实现步骤:1、首先获取会员卡列表,把会员卡id变量化;
2、将变量化后的会员卡传给禁用操作的api,执行禁用操作
第一步,获取会员卡列表的接口返回如下

第二步,创建“脚本代码[Javascript]”,创建后的界面如下图,后面需要对脚本进行处理


第三步,处理脚本和数据。
1、第一步的时候,获取会员卡数据的接口已经执行了,且返回数据,所以这里的第一步,需要“绑定求他测试步骤的参数”,把会员卡id引入到禁用接口中

2、会员卡的id存储在Data中,选中Data,确认

3、插入成功后,示例区域显示如下图

4、需要处理一下

5、预期目标是禁用所有的会员卡,但是系统必须保留一个会员卡存在,所以保留第一个会员卡不禁用,其他的全禁用。所以需要创建循环,把获取到的会员卡id循环给禁用执行去执行禁用。
引入for循环,注意下图3个红色下划线。第一个代表执行从第2组数据开始,因为第一组不执行,所以这里写“1”,第二个下划线test代表let 定义的内容,第三个下划线是指循环{}内的内容,最后会有一个}结尾

6、完善api_1内的信息,这里主要填写禁用接口的一些信息,如url内的禁用接口地址,name为操作步骤的名称可自定义,method设置为post,因为禁用进口是post请求,headers空(视情况),bodytype设置json,请求数据以json格式提交,body后的内容,禁用接口body只有id:xx,这一项,而id又是从上面定义的test中获取的,且只需要test中的Id值,所以可以写成“id: test[i].Id”,这里的i对应data里的i,意思是第几组会员卡下的id值

7、然后就是加入判断,请求后的返回值不等于0,执行失败,即禁用失败

8,整个[Javascript]脚本如下,关键部分已标红
//以下代码为示例代码(支持原生js/jquery写法),正式测试前请删除
//定义需要测试的API api_1
let apiResponse = response["248509"].Data;
for (var i =1; i < apiResponse.length; i++) {
var api_1 = {
"url": "/{{storeid}}/Member/DisabledLevelCard", //[必填][string]请求地址,若不存在请求协议,默认http
"name": "禁用会员卡", //[选填][string],API名称,方便检索,不填则默认为系统生成API编号
"method": "POST", //[选填][string],请求方式,可能值有[GET/POST/PUT/PATCH/DELETE/HEAD/OPTION],兼容大小写,默认为GET
"headers": {}, //[选填][object],请求头部
"bodyType": "json", //[选填][string],请求体类型
"body": {
id: apiResponse[i].Id
},
"timelimit": "follow" //[选填][number],超时限制,单位为ms,超过时间则判断为请求失败,0为不限制请求时间(慎用!防止程序假死),默认为10s
};
//执行api_1的测试,返回格式为{time:"请求时间",code:"HTTP状态码",response:"返回结果",header:"返回头部"},
//如{time:"32ms",code:200,response:"helloworld",header:{"content-length":"568"}}
var result_api_1 = eo.execute(api_1);
//判断返回结果
if (JSON.parse(result_api_1.response).Code != "0") {
eo.stop("禁用执行失败"); //中止测试,并且抛出相关信息。
}
}
执行后返回信息

检查页面

场景(二)
场景(一)JS脚本内设置的接口,以json方式提交数据,如果遇到表单提交,则需要对bodyType修改一下,如下图请求

那么在js插入脚本内,就需要修改下,把"bodyType": "form-data", 上排headers,需要注意,如果设置了环境全局变量,会影响这里的请求头,所以需要在这里单独修改文本格式,避免提交文本格式不正确

场景(三),假如需要循环的对象没有数据?
比如删除商品,如果当前没有商品,按照场景(一)取数据,就会提示长度(length)错误,因为获取的值是空的。所以这里需要加个if判断
下图红框内即加入一个if判断,如果返回的Datalist不为空,则执行if内的脚本内容

js 判断的用法,参考https://www.runoob.com/js/js-if-else.html
eolinker流程用例步骤之脚本代码[Javascript]:读取多组数据,循环执行同一操作的更多相关文章
- Selenium应用代码(读取mysql表数据登录)
1. 封装链接数据库的类: import java.sql.ResultSet; import java.sql.Connection; import java.sql.DriverManager; ...
- Junit应用代码(读取mysql表数据)
1. 封装连接数据库的类: import java.sql.ResultSet; import java.sql.Connection; import java.sql.DriverManager; ...
- 关于Cocos Creator用js脚本代码播放骨骼动画的步骤和注意事项
步骤: 1.用cc.find()方法找到相应的骨骼动画节点,并把这个对象赋值给一个var出来的新对象. 具体代码:var spineboy_anim = cc.find("UI_Root/a ...
- Java IDEA根据database以及脚本代码自动生成DO,DAO,SqlMapper文件(一)
根据数据库代码自动生成的插件挺多的,这里主要分享两种: 1.根据database以及脚本代码自动生成 2.根据mybatis-generator-core自动生成(下一章节进行分享,包含sqlserv ...
- Python处理NetCDF格式数据为TIFF数据(附脚本代码)
博客小序:NetCDF格式数据广泛应用于科学数据的存储,最近几日自己利用python处理了一些NetCDF数据,特撰此博文以记之. 参考博客: https://www.cnblogs.com/shou ...
- .net 用户控件ascx.cs注册js脚本代码无效果
在.net web项目中碰到一个比较奇怪的问题,网上没找到解决方案,先自己mark一下 问题描述: 添加一个用户控件ascx,在后端.cs添加js注册脚本,执行后没有弹出框 注册脚本为: this.P ...
- Wifite.py 修正版脚本代码
Kali2.0系统自带的WiFite脚本代码中有几行错误,以下是修正后的代码: #!/usr/bin/python # -*- coding: utf-8 -*- """ ...
- coreseek实战(四):php接口的使用,完善php脚本代码
coreseek实战(四):php接口的使用,完善php脚本代码 在上一篇文章 coreseeek实战(三)中,已经能够正常搜索到结果,这篇文章主要是把 index.php 文件代码写得相对完整一点点 ...
- Linux oracle数据库自动备份自动压缩脚本代码
Linux oracle数据库备份完成后可以自动压缩脚本代码. 复制代码代码如下: #!/bin/bash #backup.sh #edit: www.jbxue.com ##系统名称 sysname ...
- 取缔Chrome装载电脑管家的广告过滤脚本代码
今天Chrome调试脚本.加载在下面的脚本中找到的内容: /* 电脑管家chrome 广告过滤 */ var GJAD_CS = { elemhideElt : null, setElemhideCS ...
随机推荐
- mysql8.0无备份通过idb文件恢复数据过程、idb文件修复和tablespace id不一致处理
周末突然接到一位一年多没联系的妹妹打来电话,"刘哥,快来救救我",我脑海瞬间冒出妙瓦底,电信火苲马扁.....,当时就冒汗了,心想这个妹子怎么被... 问其原由,原来是他们公司服务 ...
- [OI 向] 深入理解二阶线性递推
本文主要面向普及/提高组 OIer 和 ACMer.考虑大多数 OIer 的情况,本文默认读者只会矩阵乘法,不了解矩阵的行列式,矩阵的秩等内容.本文使用 C++ 编写代码示例. 什么是二阶线性递推 二 ...
- 本地部署DeepSeek-R1并使用自定义的知识库AnythingLLM
一.基础信息 1.概述 以下是私有化部署方案的优势: 性能卓越:提供媲美商业模型的对话交互体验 环境隔离:完全离线运行,杜绝数据外泄风险 数据可控:完全掌控数据资产,符合合规要求 2.硬件环境 CPU ...
- FLink16--计数窗口--CountWindiwApp
一.依赖 https://www.cnblogs.com/robots2/p/16048648.html 二.代码 概念:窗口来多少条计算一次,存在滚动和滑动两种情况 package net.xdcl ...
- WPF的Dispatcher类里的BeginInvoke,Invoke,InvokeAsync
原文地址:https://blog.csdn.net/niuge8905/article/details/81117989 深入了解 WPF Dispatcher 的工作原理(Invoke/Invok ...
- NET中三种主机简单理解
在NET中有三个不同的主机: .NET WebApplication 主机,也称为最小主机. 这是.NET 6中的一个新特性,旨在提供最小的启动时间和内存消耗.最小主机只包括.NET运行时的最基本组件 ...
- JUC并发—9.并发安全集合二
大纲 1.并发安全的数组列表CopyOnWriteArrayList 2.并发安全的链表队列ConcurrentLinkedQueue 3.并发编程中的阻塞队列概述 4.JUC的各种阻塞队列介绍 5. ...
- Typecho 引入JS简单的实现点击文字即可复制
在文章中插入大量无意义内容一不美观,二不便复制,不如使用 js 创建隐藏内容的复制按钮吧. 引入 JS 本主题:依次进入 控制台 - 外观 - 设置外观 - 主题自定义扩展,将以下代码加入到 自定义 ...
- 帝国CMS下iframe标签无法引入视频,ueditor编辑器中html标签无法显示问题,设置ueditor默认行高为1.75
问题描述: 1.帝国cms后台添加优酷视频,使用到iframe,富文本编辑器中使用iframe引入视频后检查发现html代码未出现iframe字样,排查后发现为ueditor限制过滤了部分html代码 ...
- 关于JS中继承
继承,我理解就是把所有实例可能用到的属性和方法抽出来,单独放在一个"超类"中,一方面避免重复写代码,另一方面也会节省内存.如果单独用原型继承,引用值的处理是个问题 如果单独用cal ...