节点封装
锁定节点
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/false | Boolean | 是否找到 |
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/false | Boolean | 是否找到 |
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/false | Boolean | 是否找到 |
查找可点击
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/false | Boolean | 是否找到 |
findLongClickEx 查找可用父点击节点并无指针长点击
参数名 | 必选 | 类型 | 说明 | 默认 |
---|---|---|---|---|
node | 否 | NodeInfo | 节点对象 | g_ret |
isnoclick | 否 | Boolean | 是否不进行指针点击[只返回可点击的父节点信息] | false |
//查找可用父节点并长无指针点击,默认g_ret参数
findLongClickEx()
//指定node查找节点并长无指针点击
findLongClickEx(node)
//指定node查找节点并返回父节点信息
findLongClickEx(node, true)
//信息存储在g_parent中
参数名 | 类型 | 说明 |
---|---|---|
true/false | Boolean | 是否找到 |
findClickExC 查找可用子点击节点并无指针点击
参数名 | 必选 | 类型 | 说明 | 默认 |
---|---|---|---|---|
node | 否 | NodeInfo | 节点对象 | g_ret |
isnoclick | 否 | Boolean | 是否不进行指针点击[只返回可点击的父节点信息] | false |
//查找子节点并无指针点击,默认g_ret参数
findClickExC()
//指定node查找子节点并无指针点击
findClickExC(node)
//指定node查找子节点并返回信息
findClickExC(node, true)
//信息存储在g_child中
参数名 | 类型 | 说明 |
---|---|---|
true/false | Boolean | 是否找到 |
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/false | bool | 是否找到 |
获取属性
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))
}
参数名 | 类型 | 说明 |
---|---|---|
500 | int | 节点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))
}
参数名 | 类型 | 说明 |
---|---|---|
500 | int | 节点y中心点 |
操作节点
pressHalf 在节点一半的范围内随机按压
参数名 | 必选 | 类型 | 说明 |
---|---|---|---|
node | 否 | NodeInfo | 节点对象 |
timeMin | 否 | number | 最小时 长,默认1s |
timeMax | 否 | number | 最大时长,默认同最小 |
pressHalf();
pressHalf(g_ret);
pressHalf(g_ret, 2);
pressHalf(g_ret, 2, 5);
返回值 | 类型 | 说明 |
---|---|---|
true/false | boolean | 是否成功 |
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.easyclick | string | 当前包名 |