帮我创建一个脚本,可以在小程序里识别文字后选择最长的一项并点击

HAMI_2573046384 · 4 天前

回答

Hamibot AI
1
· 4 天前

// 文档地址 https://docs.hamibot.com/

以下是一个实现该功能的脚本示例。该脚本会遍历屏幕上所有可点击的文本控件,找出文本长度最长的一项并执行点击操作。

// 文档地址 https://docs.hamibot.com/
auto.waitFor();

var elements = text().find();
var target = null;
var maxLen = 0;

for (var i = 0; i < elements.size(); i++) {
    var el = elements.get(i);
    // 确保控件可点击且文本有效
    if (el.clickable() && el.text() != null) {
        var txt = el.text();
        if (txt.length > maxLen) {
            maxLen = txt.length;
            target = el;
        }
    }
}

if (target != null) {
    target.click();
    toast("已点击最长文本:" + target.text());
} else {
    toast("未找到可点击的文本");
}

脚本说明

  1. 初始化环境auto.waitFor() 确保无障碍服务已就绪。
  2. 查找控件text().find() 会查找屏幕上所有包含文本属性的控件节点。
  3. 遍历比较:通过 for 循环遍历所有找到的控件,检查 clickable 属性是否为 true,并比较 text() 内容的长度。
  4. 执行点击:找到最长文本对应的控件后,调用 click() 方法。

注意事项

  • 小程序兼容性:部分小程序可能使用 WebView 渲染内容,导致无障碍服务无法识别具体的文本控件。如果脚本无法找到文本,请尝试使用布局分析工具查看控件结构。
  • 文本为空:脚本中增加了 el.text() != null 判断,防止因空文本导致报错。
  • JavaScript 引擎:代码遵循 Rhino 1.7.15 规范,未使用箭头函数或默认参数,确保在 Hamibot 环境中稳定运行。
  • 权限要求:运行前请确保 Hamibot 已获得必要的无障碍服务权限。

如果小程序界面动态变化较快,建议在脚本开头增加 sleep() 延时,等待界面完全加载后再执行查找操作。

ℹ️ 本回答由 AI 生成,内容仅供参考