回答
要基于图片识别来点击按钮,可以通过以下步骤实现:
1. 准备工作
- 获取按钮模板图片:截取目标按钮的图片保存为模板文件(如
/sdcard/按钮模板.png
) - 申请截图权限:需要调用
requestScreenCapture()
获取屏幕捕获权限
2. 核心代码
// 文档地址 https://docs.hamibot.com/
auto.waitFor();
if (!requestScreenCapture()) {
toast("需要开启截图权限");
hamibot.exit();
}
// 读取模板图片
var template = images.read("/sdcard/按钮模板.png");
// 设置匹配参数
var options = {
threshold: 0.9, // 相似度阈值,0-1之间,数值越接近1匹配越严格
region: [0, 0, device.width, device.height] // 全屏范围查找
};
// 循环查找按钮
while(true){
var screen = captureScreen(); // 截图
var point = images.findImage(screen, template, options);
if(point){
// 找到按钮中心位置并点击
var centerX = point.x + template.getWidth()/2;
var centerY = point.y + template.getHeight()/2;
click(centerX, centerY);
toast("按钮已点击");
break;
} else {
toast("未找到目标按钮");
sleep(1000); // 1秒后重试
}
}
3. 关键参数说明
- threshold:相似度阈值建议保持 0.9(数值越大匹配越严格)
- region:可通过
bounds()
限定查找区域提升效率 - 屏幕缩放:不同分辨率设备需要适配,建议使用
device.width/device.height
动态计算位置
4. 注意事项
- 模板图片应选择按钮的固定形态区域
- 避免使用动态变化/半透明的按钮图像作为模板
- 若按钮位置固定,建议通过
bounds()
直接限定查找区域:
var bounds = [100, 200, 300, 400]; // 精确指定查找区域[x1,y1,x2,y2]
var options = {region: bounds};
5. 调试技巧
- 使用
images.detectsColor()
辅助验证颜色特征 - 通过
toast()
输出调试信息 - 使用
sleep(1000)
控制查找频率防止过度消耗资源
该方法适用于识别无文本属性的图标按钮、验证码按钮等场景,但会受屏幕分辨率和界面布局变化影响,需要根据实际设备调整模板和参数。
ℹ️ 本回答由 AI 生成,内容仅供参考