Auto.js是一个使用JavaScript编写Android自动化脚本的工具。
由于原作者不再维护 Auto.js 项目,目前常见的两个分支:AutoX 和 Auto.js Pro 。
其中
- AutoX是开源的 https://github.com/kkevsekk1/AutoX 文档: http://doc.autoxjs.com/#/
- Auto.js Pro 商业化版本,闭源的 https://pro.autojs.org/ 文档: https://pro.autojs.org/docs/ 中提到 Auto.js Pro移除了自动化测试、图片处理、消息通知等模块,如果你需要实现的是自动化、工作流工具,则不适合Auto.js Pro
我们这里要演示的是自动化脚本的功能,所以使用的是 AutoX。
Auto.js特点
Auto.js特点如下:
无需Root权限的自动化工具
许多Android自动化工具需要设备获得Root权限才能使用,但Auto.js无需Root权限,即使在没有Root的设备上也可以运行大部分功能。
这个能力主要是由无障碍服务实现的。
悬浮窗录制和运行
通过使用悬浮窗,可以方便的做不干扰情况下的录制和运行。
http://doc.autoxjs.com/#/?id=综述
具体可以看本文最后部分的截图。
基于JavaScript开发
AutoX.js 使用 JavaScript 作为脚本语言,目前使用 Rhino 1.7.13 作为脚本引擎,支持 ES5 与部分 ES6 特性。
安装及 Hello World
安装分为两个部分:手机端安装APK ,电脑端安装开发调试插件。
手机端APK
下载地址: https://github.com/kkevsekk1/AutoX/releases
APK版本说明:
- universal: 通用版(包含以下2种CPU架构)
- armeabi-v7a: 32位ARM设备
- arm64-v8a: 64位ARM设备(主流旗舰机)
为了后面使用方便,安装好后,在左侧边栏(从左侧往中间滑)打开无障碍服务,同时需要将autojs开启自启动、后台弹出界面等等特权。
VSCode插件安装
VSCode插件名:Auto.js-Autox.js-VSCodeExt, 可以通过 https://marketplace.visualstudio.com/items?itemName=aaroncheng.auto-js-vsce-fixed 这个地址直接访问该插件。
VSCode连接手机操作
需要与电脑同一局域网,或者手机连接电脑无线。
- ipconfig/ifconfig 查看自己本机ip
- 在手机侧配置服务器地址
启用VSCode插件的服务
按 Ctrl+Shift+P 或点击"查看"->"命令面板"可调出命令面板,输入 Auto.js 可以看到几个命令,如下图:
我们这里执行命令开启服务。
VSCode的右下角会有相关提示。
上图这个提示除了服务运行起来了,还有MuMu设备连接上来的提示。
手机端连接
手机打开Auto.js侧边选项卡--->连接电脑---->输入ip地址。
下面是连接本机的MuMu模拟器的截图:
打开Auto.js侧边选项卡
打开连接电脑选项
输入服务器地址,点确认完成连接
无线连接、ADB连接看插件的文档:https://marketplace.visualstudio.com/items?itemName=aaroncheng.auto-js-vsce-fixed
Hello World
- 在VsCode新建一个js 文件
- 输入如下代码:
toast('Hello World');
- 按F5(或者代码页的三角形按钮)执行
雷电模拟器下执行效果如下图
我这里碰到Mac下MuMu模拟器(版本1.9.58)有问题,报错误,Mac平台各方模拟器的支持还是比较弱的。
16:38:44.938/E: Function importClass must be called with a class; had "[JavaPackage java.util.concurrent.CompletableFuture]" instead. (<init>#14)
Function importClass must be called with a class; had "[JavaPackage java.util.concurrent.CompletableFuture]" instead.
at <init>:14:0
at /android_asset/modules/npm/stream.js:5:0
at /android_asset/modules/npm/event-stream.js:954:0
at __nccwpck_require__ (/android_asset/modules/npm/event-stream.js:988:0)
at /android_asset/modules/npm/event-stream.js:119:0
at __nccwpck_require__ (/android_asset/modules/npm/event-stream.js:988:0)
at /android_asset/modules/npm/event-stream.js:9:0
at __nccwpck_require__ (/android_asset/modules/npm/event-stream.js:988:0)
at /android_asset/modules/npm/event-stream.js:1008:0
at /android_asset/modules/npm/event-stream.js:1:0
at /android_asset/modules/npm/process.js:4:0
at <init>:59:0
at <init>:5:0
https://github.com/kkevsekk1/AutoX/issues/635
示例: 刷抖音
打开了指定的视频App,并在一个无限循环中模拟了向下滑动的操作来切换视频,并通过等待一段时间模拟观看视频的过程。
https://zhuanlan.zhihu.com/p/631027548
// 导入 AutoJS 的相关模块
var packageName = "com.ss.android.ugc.aweme"; // 视频App的包名
// 打开视频App
launch(packageName);
// 等待视频App加载完成
waitForPackage(packageName);
// 自动刷视频
autoSwipe();
// 自动刷视频函数
function autoSwipe() {
while (true) {
// 模拟向下滑动操作
swipe(
device.width / 2,
device.height * 0.8,
device.width / 2,
device.height * 0.2,
1000
);
// 等待一段时间,模拟观看视频
sleep(5000); // 可以根据实际情况调整等待时间
}
}
常用功能说明
打开模拟器的Root权限
雷电模拟器怎么开启root权限?
- 进入雷电模拟器,点击右上角按钮。
- 在弹出的菜单中选择软件设置。
- 进入软件设置选择其他设置,点击开启即可。
布局分析,查看UI
查看控件信息
生成代码能力
生成找元素代码
总结
在移动端上进行自动化任务,最好的选择是使用AutoX.js。以下是详细的原因解释:
可编程性:AutoX.js允许开发者使用JavaScript编写自动化脚本。JavaScript是一种流行的编程语言,许多开发者都对其有所了解。通过编写脚本,用户可以轻松地控制手机或模拟器上的各种操作。
跨平台兼容:AutoX.js可以在不同的Android设备和模拟器上运行。这意味着开发者可以编写一套脚本,在多个平台上进行测试和部署,节省了大量时间。
功能丰富:AutoX.js提供了丰富的API和接口,可以控制手机的各种硬件和软件功能。从简单的点击和滑动操作到复杂的网络通信和文件操作,几乎可以实现所有自动化需求。
开源和免费:AutoX.js是一个开源项目,开发者可以自由访问其源代码。这意味着有能力的开发者甚至可以根据自己的需要对其进行定制。而且,它是完全免费的,这使得个人开发者和小公司能够轻松开始使用它,无需担心额外的成本。
AutoX.js以其强大的功能、跨平台兼容、开源免费、简单易上手等特点,成为了手机和模拟器自动化的首选工具。无论是专业开发者还是业余爱好者,都可以利用AutoX.js轻松实现自动化需求,提高工作效率和灵活性。