一、点击坐标:
1、具体数字坐标;
例:
click(200, 300)
2、手机屏幕宽高获取的坐标。
例:
click(device.width / 2, device.height -100)
console.log(device.width / 2, device.height-100)
二、点击控件:
1、可以找到常用控件:desc、id、text
(1)clickable是true,可以直接点击的控件;
例:
if (id(“com.ainong.shepherdboy:id/iv_ad2”).findOnce()) {
id(“com.ainong.shepherdboy:id/iv_ad2”).findOnce().click()
console.log(id(“com.ainong.shepherdboy:id/iv_ad2”).click())
}
(2)clickable是false,需要获取控件范围才能点击;
例:
let 提现按钮 = text(“提现”).findOnce()
if (提现按钮) {
click(提现按钮.bounds().centerX(), 提现按钮.bounds().centerY())
log(“点击了”)
// press(提现按钮.bounds().centerX(), 提现按钮.bounds().centerY(), 200)
}
2、常用控件找不到,只能框架结构寻找点击。
用className、depth、drawingOrder、indexInParent
例:
let 消息 = className(“android.widget.ImageView”).depth(12).drawingOrder(1).indexInParent(2).findOnce()
消息.click()
log(消息.click())
三、随机点击,我最常用的方式
1、clickable是false但是文本属性有文字内容
例:
function 控件随机点(uiObject) {
if (!uiObject) return null;
let bus = uiObject.bounds();
let 偏移 = {
x: bus.width() * 0.3,
y: bus.height() * 0.3,
};
let busObj = {
x: random(bus.left + 偏移.x, bus.right - 偏移.x),
y: random(bus.top + 偏移.y, bus.bottom - 偏移.y),
};
if (busObj.x < 0 || busObj.y < 0 || busObj.x > device.width || busObj.y > device.height) {
return false;
}
// log(bus.centerX(), bus.centerY())
// log(busObj.x, busObj.y);
click(busObj.x, busObj.y);
sleep(500)
return true;
};
此时可以用该函数点击
var 注册=text("马上注册").findOne(10000)
if (注册) {
控件随机点(注册)
}
这里注意findOne(10000)和findOnce()的区别,findOne(10000)括号里是10秒钟找不到就略过本次查找,findOnce()是阻塞函数会一直查找再点击类似上面的第二大点,如果findOne()不填时间就和findOnce()一样是阻塞函数。
2、当然如果没有文本属性也可以这样点击
例:
var 注册=text("马上注册").className(“android.widget.ImageView”).depth(12).drawingOrder(1).indexInParent(2).findOne()
if (注册) {
控件随机点(注册)
}
03j7yg