效率神器--Auto.js的快速入门

21,892 阅读6分钟

引言

在正式为大家讲述之前,容我废话两句,第一次使用Auto.js是为了简化学校每日签到的操作(自从疫情开始,就没停过,快要两年了),作为一名学技术的对于这种简单重复的劳动是非常厌倦的,于是花了点时间学习。在尝到技术带来的便利后,特别想要与大家分享,所以带来这篇文章供大家参考。

通过阅读这篇文章,各位掘友可以迅速学会Auto.js和其开发工具的安装、快速熟悉并使用Auto.js自带的一些工具、并且尝试写一些小程序。

简介

首先,解决的还是 什么是Auto.js 的问题。
简单来说,它是Android平台上支持Node.js的JavaScript自动化工具,是基于无障碍服务可直接指定控件进行操作的的App。它有着超多应用场景,例如自动签到打卡、处理文件为excel、批量处理图片、自动化测试等,帮助我们解放双手,提高效率。

同时,与其他框架相比,Auto.js也有着很大优势

与按键精灵相比,它无需Root,可直接指定控件进行操作
与Robotium相比,它无需连接电脑即可运行,代码简单,学习成本非常低

Auto.js一共有两个版本,一个是已停止更新的4.1.1,一个是仍在更新的8.0-pro版本。
前者是开源免费的,但由于被黑产广泛使用等原因,违背作者本意,以至于作者关闭了官方下载通道;后者是一次性付费购买(价格不贵),可在官方网站自行下载。 后者在前者之上做了一些调整,增加了一些功能,同时也有一些限制(比如对于一些主流的APP有操作限制)
两者的功能上没有太大区别,都可以满足日常使用,我将使用前者为大家演示。

使用

官方文档
大家可以阅读使用文档,熟悉里面的一些方法,理解作者的设计思路和理念

Auto.js Pro
Auto.js

视频资源
b站上有着不少教程可供大家学习,不再做推荐,请大家自行搜索

准备阶段

auto.js的安装

Auto.js的app安装十分简单,4.1.1的apk我会贴在评论区,大家自行获取

但是有一点需要在此声明,因为全网下架的原因 ,并无官方安全、可靠的渠道下载。我是某个社区中找到的安装包及打包插件,无法确定apk安全
所以使用本文提供apk的后果 一切自负
这是App界面
u1gpq-q20fi.gif

vsCode配置

为了高效开发,在电脑上下载编辑器(vsCode),作者在上面提供了插件 便于调试。 搜索auto.js,选择下载如图插件 image.png 当然,大家也可以不安装,在Auto.js的App中直接写代码。
而使用vscode的话,当电脑与手机在同一局域网时,可以通过这个插件可以实现代码在vscode上运行,手机执行相应的脚本。(具体操作请看实战演示)

内置工具详解

界面介绍

如图所示 4fb12dcf770a0c6ea8846340416e4da.jpg 在使用Auto.js之前。需要打开无障碍服务,悬浮窗(为了使用自带的工具),连接电脑(为了配合vsCode使用)

布局分析

打开想要分析的App界面,如图所示点击悬浮球的按钮

84bf860e87b61c3c4898291d928fcd5.jpg
然后就会出现

e79cc0ff8af7259f1160c4f2867d7f3.jpg

布局范围分析

Auto.js基于控件的操作可以帮助我们选择屏幕上的控件,获取其信息或对其进行操作。对于一般软件而言,对不同机型有很好的兼容性;但对于游戏而言,由于游戏界面并不是由控件构成,我们选择Auto.js基于坐标的操作,这里我不在过多讲述。 常见控件的类名如下:

  • android.widget.TextView 文本控件
  • android.widget.ImageView 图片控件
  • android.widget.Button 按钮控件
  • android.widget.EditText 输入框控件
  • android.widget.AbsListView 列表控件
  • android.widget.LinearLayout 线性布局
  • android.widget.FrameLayout 帧布局
  • android.widget.RelativeLayout 相对布局
  • android.widget.RelativeLayout 相对布局
  • android.support.v7.widget.RecyclerView 通常也是列表控件

话说回来,我们继续。我们先说布局范围分析(以某宝主界面为例)假使我们需要点击 我的淘宝 ,模拟点击事件。

3c2a85c0ea9c11e9b97ed9ddc8c2984.jpg 在上面的图片中,那么只需点击对应位置的组件,就能看到该组件的信息,如下图:

142f93e41900edfb36dfe883b154c16.jpg 这里,我们可以看到诸如clickable,depth,desc等属性,有必要说一下,clickable值true,才可点击。

布局层次分析

其次是布局层次分析。

dfe9d914862f05599ce090e644725db.jpg 显而易见,组件以树的结构组织,一个又一个堆叠在一起。

之所以还要提一嘴这个,是因为有时候我们不管使用id,还是desc,抑或是text等属性进行选择都无法定位我们想要的组件或者进行一些操作,因此,我们需要利用组件之间的关系间接实现效果。

生成代码

App非常贴心的提供了这个功能。在一般情况下,通过 “生成代码” 可以一键生成定位控件,并进行诸如点击,长按,设置文本等操作的代码。

99c1179a31f64b77ea449acae1ac3a2.jpg
就像这样

ee4e8eb0342e6338b50ace5d1eac352.jpg

实战演示

终于给大家介绍完了基本的功能。利用上面说的一些工具,下面给大家来个实操(以淘宝签到为例)
首先,安装了vsCode插件的同学可以打开编辑器,通过Ctrl + Shift + P 选择 Autojs start server(开启Autojs服务)
然后确保电脑和手机在同一局域网下,在手机App中填入电脑IP地址(通过cmd命令,输入ipconfig获得),连接电脑
然后就可以正式开发了。

    //定义签到方法
    function signIn(){
         //打开手机App
        launchApp('淘宝');
        sleep(1500);
        //进入 我的界面 
        className("android.widget.FrameLayout").desc("我的淘宝").findOne().click();
        sleep(1500);
         //进入签到界面
        className("android.widget.FrameLayout").desc("领淘金币").depth(16).findOne().click();
        sleep(1500);
        //领取淘金币
        className("android.view.View").text("今日签到").findOne().parent().child(0).click();
    }
    //检查无障碍服务是否启动,若没有则跳转到无障碍服务启动界面,并等待;当服务启动后脚本继续运行
    auto.waitFor();
    //调用签到方法
    signIn();
    

一个简单的签到就这么完成了,大家大可以去玩一些更高级的玩法,但我不再过多展示,最后利用App将代码打包成apk。

END

技术虽好,但我们需要在法律要求的范围内合理地使用抵制黑产,拒绝面向监狱編程,应是我们的基本态度。
最后,我再一次强烈推荐大家Auto.js,与其花钱请人定制,不如自己花点时间学习。有什么问题,我们互相交流,加油!!!

都已经看到这了,给个赞呗。