回答
// 文档地址 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("未找到可点击的文本");
}
脚本说明
- 初始化环境:
auto.waitFor()确保无障碍服务已就绪。 - 查找控件:
text().find()会查找屏幕上所有包含文本属性的控件节点。 - 遍历比较:通过
for循环遍历所有找到的控件,检查clickable属性是否为 true,并比较text()内容的长度。 - 执行点击:找到最长文本对应的控件后,调用
click()方法。
注意事项
- 小程序兼容性:部分小程序可能使用 WebView 渲染内容,导致无障碍服务无法识别具体的文本控件。如果脚本无法找到文本,请尝试使用布局分析工具查看控件结构。
- 文本为空:脚本中增加了
el.text() != null判断,防止因空文本导致报错。 - JavaScript 引擎:代码遵循 Rhino 1.7.15 规范,未使用箭头函数或默认参数,确保在 Hamibot 环境中稳定运行。
- 权限要求:运行前请确保 Hamibot 已获得必要的无障碍服务权限。
如果小程序界面动态变化较快,建议在脚本开头增加 sleep() 延时,等待界面完全加载后再执行查找操作。
ℹ️ 本回答由 AI 生成,内容仅供参考