跳到主要内容

节点封装

锁定节点​

keepNode 锁定节点​

参数名必选类型说明默认
mode否boolean是否强制刷新节点false
keepNode();
//遇到界面不刷新时,强制刷新,
keepNode(true);
参数名类型说明
无无无

查找节点​

findNode 查找节点并点击​

参数名必选类型说明
selector是Selector选择器
isclick否Boolean是否无指针点击
pointer否Boolean是否指针点击
//查找节点
if (findNode(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"))) {
logd(JSON.stringify(g_ret))
}
//查找节点并无指针点击
if (findNode(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), true)) {
logd(JSON.stringify(g_ret))
}
//查找节点并指针点击
if (findNode(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), true, true)) {
logd(JSON.stringify(g_ret))
}
//信息存储在g_ret中
参数名类型说明
true/falseBoolean是否找到

findNodeS 查找节点S,异常处理使用​

参数名必选类型说明
selector是Selector选择器
isclick否Boolean是否无指针点击
pointer否Boolean是否指针点击
//查找节点
findNodeS(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"))
//查找节点并无指针点击
findNodeS(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), true)
//查找节点并指针点击
findNodeS(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), true, true)
//信息存储在g_ret2中
参数名类型说明
true/falseBoolean是否找到

findNodeAll 查找所有节点并点击一个,如果取所有就不点击直接返回​

参数名必选类型说明
selector是Selector选择器
sindex否Number节点下标,从0开始,99表示随机,负数代表从后向前取节点,-1开始
isclick否Boolean是否无指针点击
pointer否Boolean是否指针点击
//查找所有节点
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"))) {
logd(JSON.stringify(gNodeAll))
for (let i = 0; i < gNodeAll.length; i++) {
logd(JSON.stringify(gNodeAll[i]))
//指针点击
gNodeAll[i].click()
//无指针点击
findClickEx(gNodeAll[i])
}
}

//查找指定第1个节点,下标从0开始
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), 0)) {
logd(JSON.stringify(gNodeAll))
//指针点击
gNodeAll.click()
//无指针点击
findClickEx(gNodeAll)
}

//查找指定第2个节点并无指针点击,下标从0开始
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), 1, true)) {
logd(JSON.stringify(gNodeAll))
}

//查找指定第3个节点并有指针点击,下标从0开始
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), 2, true, true)) {
logd(JSON.stringify(gNodeAll))
}

//查找倒数第1个节点,下标从-1开始
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), -1)) {
logd(JSON.stringify(gNodeAll))
//指针点击
gNodeAll.click()
//无指针点击
findClickEx(gNodeAll)
}

//查找倒数第2个节点并无指针点击,下标从-1开始
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), -2, true)) {
logd(JSON.stringify(gNodeAll))
}

//查找倒数第3个节点并有指针点击,下标从-1开始
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), -3, true, true)) {
logd(JSON.stringify(gNodeAll))
}

//查找节点,并随机返回一个
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), 99)) {
logd(JSON.stringify(gNodeAll))
//指针点击
gNodeAll.click()
//无指针点击
findClickEx(gNodeAll)
}

//查找节点并并随机无指针点击一个
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), 99, true)) {
logd(JSON.stringify(gNodeAll))
}

//查找节点并并随机有指针点击一个
if (findNodeAll(text("添加话题").id("com.ss.android.ugc.aweme:id/n4"), 99, true, true)) {
logd(JSON.stringify(gNodeAll))
}
参数名类型说明
true/falseBoolean是否找到

查找可点击​

findClickEx 查找可用父点击节点并无指针点击​

参数名必选类型说明默认
node否NodeInfo节点对象g_ret
isnoclick否Boolean是否不进行指针点击[只返回可点击的父节点信息]false
//查找可点击父节点并无指针点击,默认g_ret参数
if (findNode(text("首页"))) {
logd("点击首页")
findClickEx()
//等同于findClickEx(g_ret)
}
//以上写法等同于
if (findNode(text("首页"), true)) {
logd("点击首页")
}

//指定node查找可点击的父节点并无指针点击
let node = text("首页").getOneNodeInfo(0)
if (node) {
findClickEx(node)
}

let tmp_node = null
if (findNode(text("首页"))) {
tmp_node = g_ret
if (findNode(text("消息"), true)) {
logd("点击消息")
} else {
logd("点击首页")
findClickEx(tmp_node)
}
}

//指定node查找节点的可点击父节点并返回父节点信息
let node = text("首页").getOneNodeInfo(0)
if (node) {
//只打印,并没有点击
if (findClickEx(node, true)) {
logd(g_parent)
}
}

//信息存储在g_parent中
参数名类型说明
true/falseBoolean是否找到

findLongClickEx 查找可用父点击节点并无指针长点击​

参数名必选类型说明默认
node否NodeInfo节点对象g_ret
isnoclick否Boolean是否不进行指针点击[只返回可点击的父节点信息]false
//查找可用父节点并长无指针点击,默认g_ret参数
findLongClickEx()
//指定node查找节点并长无指针点击
findLongClickEx(node)
//指定node查找节点并返回父节点信息
findLongClickEx(node, true)
//信息存储在g_parent中
参数名类型说明
true/falseBoolean是否找到

findClickExC 查找可用子点击节点并无指针点击​

参数名必选类型说明默认
node否NodeInfo节点对象g_ret
isnoclick否Boolean是否不进行指针点击[只返回可点击的父节点信息]false
//查找子节点并无指针点击,默认g_ret参数
findClickExC()
//指定node查找子节点并无指针点击
findClickExC(node)
//指定node查找子节点并返回信息
findClickExC(node, true)
//信息存储在g_child中
参数名类型说明
true/falseBoolean是否找到

findScrollableP 查找可用父滚动节点并滚动​

参数名必选类型说明
pkgName是string包名
className是string类名
//找到一个节点
if (findNode(clz("android.widget.TextView").textMatch(".*次播放.*个视频"))) {
logd("找到列表节点");
//1.查找可滚动父节点,并上拉滚动一屏,默认传入g_ret
findScrollableP()
//2.查找可滚动父节点,并上拉滚动一屏,主动传入节点对象
findScrollableP(g_ret)
//3.不滚动,返回值存储在g_parent中,手动处理滚动方向
if (findScrollableP(node, true)) {
logd("可滚动父节点")
g_parent.scrollForward()
}
}

返回值类型说明
true/falsebool是否找到

获取属性​

centerX 获取节点x中心点​

参数名必选类型说明默认
node否NodeInfo节点对象g_ret
if (findNode(text("首页"))) {
logd(centerX());
//等同于
logd(centerX(g_ret))
}
let node = text("首页").getOneNodeInfo(0)
if (node) {
logd(centerX(node))
}
参数名类型说明
500int节点x中心点

centerY 获取节点y中心点​

参数名必选类型说明默认
node否NodeInfo节点对象g_ret
if (findNode(text("首页"))) {
logd(centerY());
//等同于
logd(centerY(g_ret))
}
let node = text("首页").getOneNodeInfo(0)
if (node) {
logd(centerY(node))
}
参数名类型说明
500int节点y中心点

操作节点​

pressHalf 在节点一半的范围内随机按压​

参数名必选类型说明
node否NodeInfo节点对象
timeMin否number最小时长,默认1s
timeMax否number最大时长,默认同最小
pressHalf();
pressHalf(g_ret);
pressHalf(g_ret, 2);
pressHalf(g_ret, 2, 5);
返回值类型说明
true/falseboolean是否成功

clickPointBounds 随机点击节点​

参数名必选类型说明
nodeInfo是object节点信息
nodelay否boolean不加延迟
if (findNode(text("xxxx"))) {
//随机500-1000ms延迟
clickPointBounds();
//不加延迟
clickPointBounds(g_ret, true);
}
let node = text("xxxxxxx").getOneNodeInfo(0);
if (node) {
//随机500-1000ms延迟
clickPointBounds(node);
//不加延迟
clickPointBounds(node, true);
}

返回值类型说明
无无无

其他​

getRunningPkgEx getRunningPkg替代​

参数名必选类型说明
无无无无
logd(getRunningPkg())
//官方功能经常获取不到包名
logd(getRunningPkgEx())
返回值类型说明
com.gibb.easyclickstring当前包名