我需要写一款hamibot机器人,需求是在手机上打开设置APP进去后在顶部的搜索框搜索X浏览器,点击输出结果再点击储存和缓冲再次点击清除储存空间点击后有一个弹窗,最后点击确定

HAMI_9104410784 · 2 天前

回答

Hamibot AI
1
· 2 天前

以下是为你编写的 Hamibot 自动化脚本。代码已针对 Rhino 1.7.15 引擎进行兼容处理,并包含完整的异常捕获与界面等待逻辑。

// 文档地址 https://docs.hamibot.com/
"auto";

// 1. 打开系统设置(兼容部分 ROM 应用名称差异)
try {
    app.launchApp("设置");
} catch(e) {
    app.startActivity({ packageName: "com.android.settings" });
}
sleep(2000);

// 2. 定位搜索框并输入关键词
var searchNode = text("搜索").findOne(3000) || textContains("搜索设置").findOne(3000) || desc("搜索").findOne(3000);
if (searchNode) {
    searchNode.click();
    sleep(1000);
    setText("X浏览器");
    sleep(2000); // 等待搜索结果列表渲染
} else {
    toast("未找到搜索框,请检查当前设置界面布局");
    exit();
}

// 3. 点击搜索结果
var resultNode = text("X浏览器").findOne(5000);
if (resultNode) {
    resultNode.click();
    sleep(2000);
} else {
    toast("未匹配到搜索结果");
    exit();
}

// 4. 进入存储管理页面(兼容不同系统文案)
var storageNode = text("储存和缓冲").findOne(3000) || text("存储和缓存").findOne(3000) || textContains("存储").findOne(3000);
if (storageNode) {
    storageNode.click();
    sleep(2000);
} else {
    toast("未找到存储相关选项");
    exit();
}

// 5. 点击清除数据/空间
var clearNode = text("清除储存空间").findOne(3000) || text("清除存储空间").findOne(3000) || text("清除数据").findOne(3000);
if (clearNode) {
    clearNode.click();
    sleep(2000);
} else {
    toast("未找到清除选项");
    exit();
}

// 6. 处理确认弹窗
var confirmNode = text("确定").findOne(5000) || text("确认").findOne(5000);
if (confirmNode) {
    confirmNode.click();
    toast("清理操作已执行");
} else {
    toast("未弹出确认窗口,请检查是否已自动清理");
}

核心逻辑说明

  1. 启动设置:优先使用 app.launchApp("设置"),若因系统语言或 ROM 定制导致名称不匹配,则通过 packageName 直接拉起系统设置。
  2. 文本匹配容错:Android 各厂商(MIUI、ColorOS、HarmonyOS 等)对设置项的命名存在差异。脚本使用 || 串联多种可能的文本或描述匹配,提高跨机型兼容性。
  3. 界面等待:每次点击后使用 sleep() 预留界面渲染时间,避免脚本执行速度过快导致点击失效。

关键适配建议

  • UI 差异处理:若在你的真机上某一步骤未触发,请在 Hamibot 控制台使用「UI 检查器」抓取对应按钮的实际 textdescclassName,替换脚本中的匹配条件。
  • 搜索框输入失效:部分定制 ROM 的搜索框为自定义控件,setText() 可能无法直接生效。可改为模拟按键输入:
    searchNode.click();
    sleep(500);
    // 逐字输入或调用系统输入法
    input("X浏览器");
    
  • 弹窗拦截:若清除操作后弹窗延迟出现,可将 findOne(5000) 替换为 waitFor("确定", 8000),实现动态等待。

运行前必做检查

脚本依赖 Android 无障碍服务与后台交互权限,请确保:

  1. 在手机「设置」→「无障碍」中开启 Hamibot 的无障碍服务。
  2. 在「应用管理」→ Hamibot → 权限管理中,授予「后台弹出界面」权限。
  3. 若手机开启省电策略,请将 Hamibot 加入电池优化白名单,防止后台被杀。

按上述步骤配置后,脚本即可稳定执行。如需针对特定机型微调选择器,可提供该机型设置界面的 UI 层级信息,我将为你优化匹配逻辑。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实