AutoTiny键鼠录制+图像识别:循环分支逻辑如何实现全自动操作?
在自动化办公、游戏挂机或重复性UI测试中,键鼠录制是最基础的功能。但单纯的录制回放只能应对线性流程——一旦界面变化、弹窗出现或操作延迟,脚本就会崩溃。AutoTiny作为一款轻量级键鼠自动化工具,提供了“录制+图像识别+循环分支”的组合能力,让自动化脚本真正具备“判断力”。本文将深入解析如何利用 AutoTiny 的循环分支逻辑,结合图像识别,构建健壮的全自动操作流程。
一、环境准备
在开始之前,请确保你已安装 AutoTiny(版本 ≥ 2.5.0)。下载地址:[官方 GitHub 仓库](https://github.com/auto-tiny/autotiny) 或官网。
此外,你需要准备:
- 一个需要自动化的目标应用(如浏览器、游戏窗口)
- 目标界面的截图(用于图像识别)
- 基本的逻辑思维(无需编程基础)
AutoTiny 支持 Windows/macOS,本文以 Windows 为例演示。
二、核心概念:录制 ≠ 自动化
很多人误以为“录制=自动化”,但实际录制只是记录鼠标点击、键盘输入和延时。一旦目标界面布局改变(比如按钮位置移动、弹窗出现),录制回放就会错位。
AutoTiny 的解决方案:用图像识别替代固定坐标,用循环分支处理不确定性。
- 图像识别:通过截图匹配,找到目标元素在屏幕上的实时位置。
- 循环分支:重复执行某段操作,直到满足条件(如“找到目标图像”或“超时”)。
三、实战:用循环分支+图像识别实现自动签到
假设我们要自动化一个网页的每日签到流程,流程如下:
1. 打开签到页面
2. 点击“签到”按钮(按钮位置可能因浏览器窗口大小变化)
3. 等待“签到成功”弹窗出现
4. 关闭弹窗
5. 重复步骤 2-4,直到今日签到完成(或出现错误)
3.1 录制基础动作
首先,录制一次完整的签到操作:
- 点击“签到”按钮
- 等待 2 秒
- 点击“关闭”按钮
录制完成后,你会得到一个.json脚本。但直接回放会失败,因为坐标是写死的。
3.2 用图像识别替代固定坐标
AutoTiny 支持在动作中使用“图像锚点”。例如,将“点击签到按钮”替换为“查找截图【sign_btn.png】并点击”。
操作步骤:
1. 截取“签到”按钮的图像,保存为sign_btn.png
2. 在 AutoTiny 编辑器中,将鼠标点击动作改为“图像点击”,选择该截图
3. 同理,将“关闭弹窗”改为图像点击,截图保存为close_btn.png
现在脚本不再依赖坐标,而是通过图像匹配找到按钮位置。
3.3 引入循环分支逻辑
但问题来了:如果签到失败(比如按钮未加载),脚本会卡死。我们需要一个循环结构,反复尝试点击,直到成功或超时。
AutoTiny 的循环分支通过“条件节点”实现。以下是一个伪代码逻辑:
循环开始 (条件:图像 sign_btn.png 存在)点击图像 sign_btn.png
等待 1 秒
如果 图像 close_btn.png 出现
点击 close_btn.png
跳出循环 (签到成功)
否则
继续循环 (等待按钮再次出现)
循环结束
超时处理:输出日志“签到失败”
在 AutoTiny 中,你可以通过拖拽节点实现:
1. 添加一个循环节点,设置循环条件为“图像 sign_btn.png 存在”
2. 在循环体内添加图像点击节点
3. 添加条件判断节点:检测close_btn.png是否存在
4. 若存在,执行点击并添加跳出循环节点
5. 若不存在,添加延迟节点(如 1 秒),然后自动返回循环头
3.4 完整脚本示例(JSON 格式)
AutoTiny 脚本本质是 JSON 结构,以下是一个简化示例(实际编辑器中无需手写):
{"version": "2.5",
"actions": [
{
"type": "loop",
"condition": "image_exist",
"image": "sign_btn.png",
"max_attempts": 10,
"timeout": 30,
"body": [
{
"type": "click_image",
"image": "sign_btn.png"
},
{
"type": "delay",
"duration": 1000
},
{
"type": "if",
"condition": "image_exist",
"image": "close_btn.png",
"then": [
{
"type": "click_image",
"image": "close_btn.png"
},
{
"type": "break_loop"
}
],
"else": [
{
"type": "delay",
"duration": 500
}
]
}
]
},
{
"type": "log",
"message": "签到流程完成"
}
]
}
3.5 运行与调试
1. 在 AutoTiny 中导入上述脚本
2. 确保截图文件(sign_btn.png,close_btn.png)位于脚本同目录
3. 点击“运行”,观察控制台输出
如果图像识别失败(如按钮被遮挡),可以调整图像匹配的阈值(默认 0.8,可降低至 0.7)。
四、进阶技巧:多分支与状态机
现实中的自动化往往更复杂,比如:
- 签到成功 → 关闭弹窗
- 签到失败 → 重试或跳过
- 网络错误 → 等待重连
你可以用嵌套循环和全局变量实现状态机。例如,定义一个变量status,根据图像识别结果改变状态,然后分支到不同逻辑块。
示例逻辑:
状态 = "等待签到"循环:
如果 状态 == "等待签到":
查找 sign_btn.png
如果找到: 点击, 状态 = "等待确认"
否则: 等待 2 秒
如果 状态 == "等待确认":
查找 close_btn.png
如果找到: 点击, 状态 = "完成"
否则: 等待 1 秒
如果 状态 == "完成":
跳出循环
这种设计让脚本具备“思考”能力,能应对多种异常情况。
五、总结
AutoTiny 的键鼠录制只是起点,真正的自动化在于循环分支逻辑与图像识别的结合。通过本文的实战,你学会了:
1. 用图像识别替代固定坐标,提升脚本鲁棒性
2. 用循环条件处理重复动作,避免死循环
3. 用条件分支处理不同结果,实现“智能判断”
下一步建议:尝试用 AutoTiny 自动化一个复杂的办公流程(如 Excel 数据处理、邮件发送),你会发现,只要逻辑清晰,全自动操作并非遥不可及。
如果你在实践中有任何问题,欢迎在评论区留言交流。自动化不是魔法,而是逻辑的艺术。