JavaScript 版本 API
注:所有标注为async的函数都需要使用await来等待执行完成,返回结果。
# BaseCase
BaseCase是所有测试case的基类,继承该基类需要自己实现run方法。
const mini_game_test = require("mini_game_test")
const BaseCase = mini_game_test.BaseCase
const logger = mini_game_test.logger
class Test extends BaseCase {
async run(c){
logger.info("run")
}
}
# async run(context)
Case逻辑入口。
参数
参数 必选 类型 说明 context 是 CaseContext对象 仅需要继承,执行时会自动传入CaseContext对象
# start()
创建BaseCase实例对象后,调用对象的start方法运行case。
# CaseContext
CaseContext 对象会通过run方法传入,是测试框架的核心工具类。
# async findPath(path)
通过Path搜索目标节点。
参数
参数 必选 类型 说明 path 是 String 目标节点对应的path路径 返回
NodeSelector实例对象
# async findImg(imgPath)
通过目标图片搜索元素。
参数
参数 必选 类型 说明 imgPath 是 String 目标图片对项目根目录的相对路径 返回
ImgSelector实例对象
# async select(kwargs)
通过条件选择后代节点,从根节点开始。
参数
参数 必选 类型 说明 kwargs 是 object/function 选择节点的条件,可传入函数自行判断 kwargs例子:
let ns = null ns = (await c.select({"k1":"v1","k2":"v2"})).select({"a":"b"}) //传入匿名函数,匿名函数的唯一参数为实际节点n对象,其包含节点内的各种属性。可以在匿名函数中对节点属性做条件判断,然后返回true/false来表示节点是否符合要求。 ns = (await c.select((n) => {return n.className === "k1"})).select({"a":"b"})
返回
NodeSelector实例对象
# async child(kwargs)
通过条件选择子节点,从根节点开始。
参数
参数 必选 类型 说明 kwargs 是 object/function 选择节点的条件,可传入函数自行判断 kwargs例子:
let ns = null ns = await c.child({"k1":"v1","k2":"v2"}) //传入匿名函数.匿名函数的参数为实际节点对象,包含节点内的各种属性。可以在匿名函数中对节点属性做条件判断,然后返回true/false来表示节点是否符合要求。 ns = await c.child((n) => {return n.className === "k1"})
返回
NodeSelector实例对象
# async tap(x, y, isPer = true)
点击目标坐标。
参数
参数 必选 类型 说明 x 是 float 横坐标 y 是 float 纵坐标 isPer 否 bool 传入坐标是否为百分比,默认true 例子:
//如果isPer为true,则传入x,y为0到1之间的浮点数,代表百分比坐标 c.tap(0.5, 0.5, true) c.tap(180.5, 360.5, false)
返回
无
# async swipe(x1, y1, x2, y2, isPer = true)
由起点坐标到终点坐标滑动。
参数
参数 必选 类型 说明 x1 是 float 起点横坐标 y1 是 float 起点纵坐标 x2 是 float 终点横坐标 y2 是 float 终点纵坐标 isPer 否 bool 传入坐标是否为百分比,默认true 例子:
//如果isPer为true,则传入x,y为0到1之间的浮点数,代表百分比坐标 c.swipe(0.5, 0.5, 0.6, 0.6) c.swipe(180, 360, 240, 360 , false)
返回
无
# async sleep(ms)
等待。
参数
参数 必选 类型 说明 ms 是 int 等待毫秒数 例子:
//等待2s await c.sleep(2000)
返回
无
# async waitForNode(nodePath, interval = 1000, num = 3)
等待节点出现。若在num次检查之后还没有满足条件的节点,则返回一个空的ns对象。
参数
参数 必选 类型 说明 nodePath 是 string 节点选择path interval 否 int 每次检查间隔时间 num 否 int 检查次数 例子:
//检查3次是否存在{a}节点,每次检查之前间隔2s,检查3次 let ns = c.waitForNode("{a}",2000,3)
返回
NodeSelector实例对象
# async snapshot()
截屏。
参数
无
例子:
//imgPath为截图文件的绝对路径 let imgPath = await c.snapshot()
返回
截图文件的绝对路径
# runRecordCase(path, runTimeLimit=600):
回放录制文件。
参数
参数 必选 类型 说明 path 是 string 录制数据的相对路径 runTimeLimit 否 int 回放录制的超时时间 例子:
await c.runRecordCase("./record_data.json")
返回
无
# assertNodeSelector(ns, msg = null)
assert NodeSelector。
参数
参数 必选 类型 说明 ns 是 NodeSelector NodeSelector msg 否 string 提示语 例子:
c.assertNodeSelector(ns,"ns null")
返回
无
# assertImgSelector(is, msg = null)
assert ImgSelector。
参数
参数 必选 类型 说明 is 是 ImgSelector ImgSelector msg 否 string 提示语 例子:
c.assertImgSelector(is,"is null")
返回
无
# async setLabel(label)
设置标签
参数
参数 必选 类型 说明 label 是 string 设置标签 例子:
await c.setLabel("start_game")
返回
无
# async clearLabel(label)
清除标签
参数
参数 必选 类型 说明 label 是 string 清除标签 例子:
await c.clearLabel("start_game")
返回
无
# NodeSelector
NodeSelector 对象是选择节点得到的结果对象,可触发包含节点的事件,同时可以以其自身为基础进行进一步筛选。
如果没有搜索到对应节点,会返回一个内容为空的NodeSelector对象,即包含节点数为0,isEmpty()返回true。
# async tap()
点击节点。如果获取节点为空或有多个满足条件的节点,调用tap会出现错误。
参数
无
例子:
await ns.tap()
返回
无
# async swipe(x, y, isPer = true)
以该节点为起点,目标坐标为终点滑动。如果获取节点为空或有多个满足条件的节点,调用会出现错误。
参数
参数 必选 类型 说明 x 是 float 终点横坐标 y 是 float 终点纵坐标 isPer 否 bool 传入坐标是否为百分比,默认true 例子:
//如果isPer为true,则传入x,y为0到1之间的浮点数,代表百分比坐标 await ns.swipe(0.5, 0.5) await ns.swipe(180.5, 360.5, false)
返回
无
# select(kwargs)
通过条件选择后代节点,从根节点开始。
参数
参数 必选 类型 说明 kwargs 是 object/function 选择节点的条件,可传入函数自行判断 kwargs例子:
ns = ns.select({"k1":"v1","k2":"v2"}) //传入匿名函数,匿名函数的唯一参数为实际节点n对象,其包含节点内的各种属性。可以在匿名函数中对节点属性做条件判断,然后返回true/false来表示节点是否符合要求。 ns = ns.select((n) => {return n.className === "k1"})
返回
NodeSelector实例对象
# child(kwargs)
通过条件选择子节点,从根节点开始。
参数
参数 必选 类型 说明 kwargs 是 object/function 选择节点的条件,可传入函数自行判断 kwargs例子:
ns = ns.child({"k1":"v1","k2":"v2"}) //传入匿名函数.匿名函数的参数为实际节点对象,包含节点内的各种属性。可以在匿名函数中对节点属性做条件判断,然后返回true/false来表示节点是否符合要求。 ns = ns.child((n) => {return n.className === "k1"})
返回
NodeSelector实例对象
# isEmpty()
当前ns对象包含的节点数是否为0,即是否有符合条件的节点。
参数
无
例子:
if(!ns.isEmpty()){ }
返回
bool
# len()
返回当前ns对象包含的节点数,即满足条件的节点数量。
参数
无
例子:
let num = ns.len()
返回
int
# ImgSelector
ImgSelector 对象是图片匹配的结果对象。
如果没有搜索到对应图像,会返回一个内容为空的ImgSelector对象。
# async tap()
点击图像,如果对空is对象调用会产生error。
参数
无
例子:
await is.tap()
返回
无
# async swipe(x, y, isPer = true)
以该节点为起点,目标坐标为终点滑动。如果对空is对象调用会产生error。
参数
参数 必选 类型 说明 x 是 float 终点横坐标 y 是 float 终点纵坐标 isPer 否 bool 传入坐标是否为百分比,默认true 例子:
//如果isPer为true,则传入x,y为0到1之间的浮点数,代表百分比坐标 await is.swipe(0.5, 0.5) await is.swipe(180.5, 360.5, false)
返回
无
# isEmpty()
当前is对象是否为空,即是否匹配到图片。
参数
无
例子:
if(!is.isEmpty()){ }
返回
bool
# logger
logger模块为用户提供了格式化的log输出,可以用来替代console.log使用。
const mini_game_test = require("mini_game_test")
const logger = mini_game_test.logger
logger.info("test")
logger.debug("test")
logger.error("test")