回答
要实现打开特定安卓软件、等待一段时间、点击按钮、判断新页面并再次点击按钮的自动化流程,可以使用 Hamibot 的自动化 API 组合完成。以下是一个标准实现模板,涵盖了启动应用、等待控件、点击、页面判断与二次点击的完整逻辑,并包含必要的兼容性处理。
// 文档地址 https://docs.hamibot.com/
// 启动目标应用,以包名方式启动
app.launchPackage('com.example.app'); // 替换为实际应用包名
// 等待应用完全启动,建议等待核心控件出现
sleep(3000); // 基础等待,根据应用启动速度调整
// 等待第一个按钮出现并点击
var btn1 = text('按钮文字').findOne(10000); // 最长等待10秒
if (btn1) {
btn1.click();
log('点击了第一个按钮');
} else {
toast('未找到第一个按钮');
hamibot.exit();
}
// 等待新页面加载完成,然后点击第二个按钮
// 通过判断新页面特有的控件是否存在来确认跳转成功
var newPageReady = text('新页面标题').findOne(10000);
if (newPageReady) {
log('已进入新页面');
// 点击第二个按钮
var btn2 = id('com.example:id/btn_submit').findOne(5000);
if (btn2) {
btn2.click();
log('点击了第二个按钮');
} else {
toast('未找到第二个按钮');
}
} else {
toast('新页面未在规定时间内加载');
hamibot.exit();
}
// 清理线程(如有必要)
threads.shutDownAll();
关键点说明:
-
启动应用
使用app.launchPackage('包名')可直接启动应用,无需模拟点击桌面图标。若需要从桌面点击启动,可通过launchApp('应用名称')实现,但包名方式更稳定。 -
等待与点击
findOne(timeout)会阻塞脚本直到控件出现或超时,避免盲目sleep。- 点击操作前先判断控件是否存在,避免因未找到控件导致脚本崩溃。
- 如果需要通过坐标点击,可以用
click(x, y),但推荐使用控件定位以提高兼容性。
-
页面判断
通过检测新页面独有的控件(如标题、特定按钮)来确认跳转成功,这是最可靠的页面判断方式。避免仅依赖sleep猜测页面加载时间。 -
多设备适配
- 不同系统可能对控件 ID 或文本渲染有差异,使用「布局分析」工具获取目标控件的实际属性。
- 若控件 ID 在不同设备上不固定,可用
text、desc或className等组合定位。
-
异常处理
每一步都加入了超时未找到控件的退出逻辑,防止脚本卡死。hamibot.exit()用于安全终止脚本。 -
兼容性
代码中未使用箭头函数、默认参数等 ES6 特性,确保在 Rhino 引擎下稳定运行。
如果需要更复杂的流程(如循环判断、结合屏幕截图判断),可在此基础上扩展。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实