回答
在 Hamibot 中自动化控制手机 App(推测“sapp”为“app”的笔误),主要依赖 Android 无障碍服务结合 JavaScript 脚本实现。以下是标准操作流程与核心实践:
1. 基础环境配置
- 安装 Hamibot 客户端,在设置中开启“无障碍服务”权限。
- 脚本首行必须调用
auto()或auto(mode)校验并启用无障碍服务。
2. 标准自动化流程
- 启动应用:
launchApp('应用名称')或app.launchPackage('包名') - 定位控件:使用选择器链
id(),text(),desc(),className()等匹配界面元素 - 执行交互:调用
.click(),.setText(),.scrollForward(),.longClick()等方法 - 状态同步:使用
findOne(timeout)或waitFor()等待界面渲染,避免操作时序错乱
3. 完整示例代码
// 文档地址 https://docs.hamibot.com/
auto('fast'); // 启用快速模式,提升控件缓存与查找效率
// 1. 启动目标应用
launchApp('微信');
// 或使用包名启动:app.launchPackage('com.tencent.mm');
// 2. 等待目标界面加载(超时5秒)
var isLoaded = waitForActivity('com.tencent.mm.ui.LauncherUI', 5000);
if (!isLoaded) {
toast('界面加载超时');
exit();
}
// 3. 查找并点击控件
var target = text('通讯录').findOne(3000);
if (target) {
target.click();
toast('点击成功');
} else {
toast('未找到目标控件,请检查界面状态');
}
4. 关键最佳实践
- 优先使用 UI 选择器:
id()和text()稳定性远高于坐标点击,可适配不同分辨率与系统版本。 - 合理设置超时:
findOne(timeout)会阻塞等待控件出现,避免盲目使用sleep()导致脚本变慢或失败。 - 异常处理:网络延迟或弹窗可能导致控件未出现,建议加入重试逻辑或
try...catch捕获选择器异常。 - Root 场景:若需执行无障碍服务无法覆盖的操作(如强制滑动、绕过安全键盘、多点触控),可使用
RootAutomator(需设备已 Root),脚本结束时务必调用ra.exit()释放资源。 - 引擎兼容:Hamibot 基于 Rhino 1.7.15,请勿使用箭头函数、
let/const、默认参数等 ES6+ 语法,统一使用var和传统函数声明。
如需针对具体 App(如自动签到、表单填写、列表滑动等)编写脚本,提供目标操作与界面特征,我将为你输出对应的选择器链与流程逻辑。
ℹ️ 内容由 AI 生成,可能不准确,请注意核实