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