目录
使用 autoxjs 做安卓自动化
安卓手机自动化的方式很多,个人认为使用 autoxjs 是比较简单的一种,下面介绍 autoxjs 的基本开发方式和一些具体案例
1. 使用前提
- 安卓手机安装 autoxjs 应用,下载
- 安卓手机 Root,root的手机能有更好的控制权 (可选)
- 开发工具使用 vscode,安装插件 Auto.js-Autox.js-VSCodeExt,(可选)
2. 开发方式
测试的手机与安装 vscode 的电脑在同一局域网中,基本流程是 vscode 使用插件 Auto.js-Autox.js-VSCodeExt 开启服务,手机端 autoxjs 连接,完成后在 vscode 上开发测试部署。
本节只针对在PC上开发的方式,喜欢直接在手机上手搓代码的可跳过
2.1. 电脑开启 autoxjs 服务
在 vscode 中 command + shift + p 打开 autoxjs 服务端,右下角会显示连接的 IP地址和端口
2.2. 手机连接 autoxjs 服务
连接完成后,在电脑上的 vscode 会提示有新的设备已经连接
2.3. 测试开发 autoxjs 脚本
在 vscode 中创建一个脚本,名称随意,如 test.js,在脚本中写代码,点击右上角运行,即可在手机上执行自动化操作
3. 最佳实践
这里仅代表个人观点,会把通用的操作封装成函数放到 common.js 文件中,如手机解锁、屏幕明暗、声音大小,启动应用、开启代理、关闭应用等,在具体应用代码中通过 require 引入进来,实际的执行脚本中只需要关注应用内部的自动化脚本如何编写。
common.js
module.exports = {
stopOtherRunningScript: function () {
console.log("关闭其他运行脚本");
// .....
},
unLockPhone: function () {
if (!device.isScreenOn()) {
// .....
}
},
startApp: function (pgName, consoleX, consoleY) {
// ....
},
closeApp: function (backCount, shutdownCallback) {
// ....
},
skeleton: function (
pgName,
logX,
logY,
executeCallback,
backCount,
shutdownCallback
) {
this.unLockPhone();
console.info(engines.myEngine().getSource());
this.stopOtherRunningScript();
var isStarted = this.startApp(pgName, logX, logY);
sleep(5000);
if (isStarted) {
console.log("应用启动");
executeCallback();
console.log("应用关闭");
} else {
console.error("启动失败");
}
this.closeApp(backCount, shutdownCallback);
},
};
如上面封装的代码,其他脚本只需要调用 skeleton 方法,就会减少很多自动化外部的代码,skeleton 方法对基本的方式进行了封装。
yitao.js
"auto";
var common = require("common.js");
common.skeleton(
"com.taobao.etao", // 启动应用的 package 名称
10, // console 的 x 坐标
1500, // console 的 y 坐标
function () { // 回调的方法
var i = 0;
while (i < 3) {
if (text("签到领钱").exists()) {
console.log("签到领钱");
click(572, 390);
sleep(3000);
break;
} else {
i++;
back();
sleep(1500);
}
}
console.log("签到泡泡");
click(488, 472);
sleep(3000);
click(400, 472);
sleep(3000);
var view = textStartsWith("已连续").findOne();
console.log("签到完成," + view.text());
},
2, // 结束后调用几次 back()
null // 结束后的回调方法
);
使用封装的 common.js,只需要在回调方法中编写自动化代码就可以,上面代码仅供参考,完整的可去 Github 中下载或者查看
Reference
版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2023/10/android-automate-with-autoxjs/