导航

用AutoX.js做移动端自动化

Posted on 2023-08-03 06:57  蝈蝈俊  阅读(16218)  评论(0编辑  收藏  举报

Auto.js是一个使用JavaScript编写Android自动化脚本的工具。

由于原作者不再维护 Auto.js 项目,目前常见的两个分支:AutoXAuto.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连接手机操作

需要与电脑同一局域网,或者手机连接电脑无线。

  1. ipconfig/ifconfig 查看自己本机ip
  2. 在手机侧配置服务器地址

启用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

  1. 在VsCode新建一个js 文件
  2. 输入如下代码:
toast('Hello World');
  1. 按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轻松实现自动化需求,提高工作效率和灵活性。