Auto.js 入门指南(一)什么是 Auto.js

前言

大家好,我是鲫小鱼。是一名不写前端代码的前端工程师,热衷于分享非前端的知识,带领切图仔逃离切图圈子,欢迎关注我,微信公众号:《鲫小鱼不正经》。欢迎点赞、收藏、关注,一键三连!!

什么是 Auto.js

理论讲解

Auto.js 是一款基于 JavaScript 语法的 Android 自动化开发工具。它允许开发者通过编写脚本,实现对手机界面、应用、控件的自动化操作。Auto.js 结合了无障碍服务(Accessibility Service)和强大的 UI 控件识别能力,可以模拟点击、滑动、输入等操作,极大地提升了移动端自动化的效率。

主要特点

  • 基于 JavaScript:上手门槛低,适合有 JS/TS 基础的开发者。
  • 强大的 UI 控件识别:支持多种控件查找方式,适配不同应用界面。
  • 丰富的 API:涵盖界面操作、文件读写、网络请求、定时任务等。
  • 支持多线程与异步操作:可实现复杂的自动化流程。
  • 可视化 UI 开发:支持自定义界面,便于交互和调试。

适用场景

  • 自动化测试
  • 自动签到、自动抢红包
  • 自动化数据采集
  • 辅助工具开发
  • 日常重复性操作自动化

调试与辅助工具

在 Auto.js 脚本开发过程中,合理利用调试和辅助工具可以大大提升开发效率和排查问题的能力。

常用调试工具

  • scrcpy 投屏工具
    • 通过 USB 或 WiFi 将手机屏幕实时投射到电脑,支持鼠标操作和录屏,极大方便了脚本调试和演示。
    • scrcpy 官方地址
  • 日志查看
    • 使用 log()console.log() 或 Auto.js 内置日志面板,实时输出调试信息。
    • 结合 Android 的 adb logcat 命令,可以查看系统级日志,辅助排查崩溃和权限问题。
  • 模拟器
    • 推荐使用夜神、雷电等安卓模拟器进行脚本开发和批量测试,便于多环境适配。
  • 开发者选项
    • 启用 Android 手机的开发者选项和 USB 调试,便于脚本部署和调试。
  • 辅助工具箱
    • 如 Auto.js 社区常用的"控件助手"、"布局分析器"等,可以辅助查找控件属性和界面结构。

调试建议

  • 多用日志输出,定位问题。
  • 投屏+鼠标操作,实时观察脚本执行效果。
  • 结合模拟器和真机,提升兼容性。
  • 遇到复杂界面,优先用控件助手分析结构。

代码示例

下面是一个简单的 Auto.js 脚本,自动打开微信并点击"发现"按钮:

javascript 复制代码
// 请求无障碍权限
auto.waitFor();
// 启动微信
app.launchApp("微信");
// 等待主界面加载
waitForActivity(".ui.LauncherUI");
// 查找并点击"发现"按钮
var btn = text("发现").findOne(5000);
if (btn) {
    btn.click();
    toast("已点击发现");
} else {
    toast("未找到发现按钮");
}

实际应用场景

  • 自动签到:每天定时打开某 App,自动完成签到流程。
  • 自动抢红包:在微信、QQ 等社交软件中,自动识别并抢红包。
  • 自动化测试:批量测试 App 的不同功能点,提升测试效率。
  • 数据采集:自动浏览网页、采集信息并保存。

常见问题与解决方案

  1. 权限不足,脚本无法运行?
    • 解决方案:确保已授予 Auto.js 无障碍权限、悬浮窗权限。
  2. 控件找不到?
    • 解决方案:尝试使用不同的查找方式(如 text、desc、id),或增加等待时间。
  3. 脚本运行卡顿?
    • 解决方案:优化查找控件的逻辑,避免死循环。
  4. 兼容性问题?
    • 解决方案:针对不同手机和系统版本,适配控件查找和操作方式。

性能优化建议

  • 控件查找时尽量缩小查找范围,减少资源消耗。
  • 合理使用 sleep 和 waitFor,避免无效等待。
  • 多线程处理耗时操作,提升主流程响应速度。
  • 定期清理无用变量和对象,降低内存占用。

在线资源

最后感谢阅读!欢迎关注我,微信公众号:《鲫小鱼不正经》。欢迎点赞、收藏、关注,一键三连!!!

相关推荐
2501_94471143几秒前
JS 对象遍历全解析
开发语言·前端·javascript
发现一只大呆瓜33 分钟前
虚拟列表:支持“向上加载”的历史消息(Vue 3 & React 双版本)
前端·javascript·面试
JMchen12341 分钟前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
css趣多多1 小时前
ctx 上下文对象控制新增 / 编辑表单显示隐藏的逻辑
前端
_codemonster1 小时前
Vue的三种使用方式对比
前端·javascript·vue.js
寻找奶酪的mouse1 小时前
30岁技术人对职业和生活的思考
前端·后端·年终总结
梦想很大很大1 小时前
使用 Go + Gin + Fx 构建工程化后端服务模板(gin-app 实践)
前端·后端·go
We་ct1 小时前
LeetCode 56. 合并区间:区间重叠问题的核心解法与代码解析
前端·算法·leetcode·typescript
张3蜂1 小时前
深入理解 Python 的 frozenset:为什么要有“不可变集合”?
前端·python·spring
无小道1 小时前
Qt——事件简单介绍
开发语言·前端·qt