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。

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

返回

截图文件的绝对路径

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

返回

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