0%

autojs

什么是Auto.JS?

Auto.JS是Android平台上的JavaScript自动化工具。

它的本质是可执行自己编写的简易Javascript脚本的,尤其可以在开启“无障碍模式”的情况下对其他App进行一些操作的一个Android App,便于进行自动化操作。学习成本非常低。

Auto.JS已被黑产广泛使用,以至于作者关闭了官方下载通道。

我们能用它自动化地做什么?
  1. 对于黑产
    微博:自动注册、远程获取内容、动发微博,点赞关注收藏、评价回复转发
    注册类:163邮箱注册,抖音注册
    签到类:百度地图签到、大众点评签到、叮咚买菜签到、拼多多签到、云闪付签到积分、支付宝签到积分、京东签到京豆等
  2. 对于普通人
    启动游戏时自动屏蔽通知、一键与特定联系人微信视频、淘宝双十一一键领猫币等
  3. 跟按键精灵的区别?跟Robotium等的区别?
    VS 按键精灵
    无需Root;可直接指定控件并点击,无需识图找坐标
    VS Robotium
    手机无需连电脑即可运行;代码极其简单;无需Eclipse或bat脚本;可在手机上选择不同脚本执行
在自动化操作演示/黑产模拟时,比较有用的功能?
  1. APP相关
    启动App(通过应用名/包名)、打开App设置页、卸载App等
  2. 时序相关
    等待指定的Activity(页面)出现、等待指定的App启动、获取当前Activity
  3. 控件相关※
    输入:点击/长按含特定文字的控件、滑动特定控件、在第N个输入框输入/追加文字、复制粘贴等;
    控件选择器:通过控件的各种xml属性(如ID、text、desc、包名、位置)选择一个或多个控件并进行操作;
    等待:等待指定控件出现
  4. 创建界面相关
    可编写界面、弹出Toast、弹出对话框、创建悬浮窗
  5. 坐标/按键类
    点击指定坐标&滑动、模拟点击各种按键(Home、后退键、菜单键、电源键等)等
  6. 其他
    随机数、网络请求、定时器、多线程、文件操作、找图等常见功能;监听按键&屏幕点击、获取各种设备相关信息(Build.*、音量、震动等等);Linux Shell命令
版本限制

在非Root情况下,Auto.JS只能运行在>=Android7.0以上的系统。

如何编写脚本、运行脚本?
  1. 安装Auto.JS APK:在手机上安装Auto.js_V4.1.1_Alpha2
    注:App会自动引导开启“无障碍服务”。以小米为例,按程序指示,在程序跳转到的页面点击“更多已下载的服务”->“Auto.js”->开启服务

  2. 在PC上编写
    首先安装VSCode,在VS Code中菜单”查看”->”扩展”->输入”Auto.js”或”hyb1996”搜索,即可看到”Auto.js-VSCodeExt”插件,安装即可。请把文件保存为.js,方便代码补全。

  3. 在PC侧调试

调试
注1:“连接电脑”开关若为蓝色才表示连接成功,否则请确认连接到了同一WIFI,若WIFI环境复杂(比如多个同名WIFI但实为不同路由器),请用笔记本/热点开WIFI
4. 脱离电脑运行
先把编写并测试好js文件复制到手机上,在手机上启动Auto.js,点⊕按钮-导入,导入到App里,然后在对应的脚本右边点“▶”即可运行。
5. 中止运行
点击Auto.JS 右下角的“×” 或在VSCode里ctrl+shift+p然后选”Stop”

常用的命令
1
2
3
4
5
launchApp(appName) //通过应用名称启动应用。如果该名称对应的应用不存在,则返回false; 否则返回true。如果该名称对应多个应用,则只启动其中某一个
launch(packageName) //通过应用包名启动应用。如果该包名对应的应用不存在,则返回false;否则返回true。
className("android.widget.LinearLayout").indexInParent(8).findOne().click(); //组合选择器
click(700,800); //点击坐标
id("iv_icon").findOne().click(); //id选择

控件主要的属性
className 类名。类名表示一个控件的类型,例如文本控件为”android.widget.TextView”, 图片控件为”android.widget.ImageView”等。
packageName 包名。包名表示控件所在的应用包名,例如QQ界面的控件的包名为”com.tencent.mobileqq”。
bounds 控件在屏幕上的范围。
drawingOrder 控件在父控件的绘制顺序。
indexInParent 控件在父控件的位置。
clickable 控件是否可点击。
longClickable 控件是否可长按。
checkable 控件是否可勾选。
checked 控件是否可已勾选。
scrollable 控件是否可滑动。
selected 控件是否已选择。
editable 控件是否可编辑。
visibleToUser 控件是否可见。
enabled 控件是否已启用。
depth 控件的布局深度。
有时候只靠一个属性并不能唯一确定一个控件,这时需要通过属性的组合来完成定位

官方文档

官方文档 注:使用选择器时无需加UiSelector.

脚本范例

https://github.com/hyb1996/Auto.js/tree/master/app/src/main/assets/sample