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")