AutoJS
一个支持无障碍服务的Android平台上的JavaScript IDE。Autojs主要是基于安卓系统的无障碍服务,实现自动化操控和监控手机信息处理。
特性:
由无障碍服务实现的简单易用的自动操作函数
悬浮窗录制和运行
更专业&强大的选择器API,提供对屏幕上的控件的寻找、遍历、获取信息、操作等。类似于Google的UI测试框架UiAutomator,您也可以把他当做移动版UI测试框架使用
采用JavaScript为脚本语言,并支持代码补全、变量重命名、代码格式化、查找替换等功能,可以作为一个JavaScript IDE使用
支持使用e4x编写界面,并可以将JavaScript打包为apk文件,您可以用它来开发小工具应用
支持使用Root权限以提供更强大的屏幕点击、滑动、录制功能和运行shell命令。录制录制可产生js文件或二进制文件,录制动作的回放比较流畅
提供截取屏幕、保存截图、图片找色、找图等函数
可作为Tasker插件使用,结合Tasker可胜任日常工作流
带有界面分析工具,类似Android Studio的LayoutInspector,可以分析界面层次和范围、获取界面上的控件信息
项目介绍:
项目地址:https://github.com/hyb1996/Auto.js
官方论坛:https://www.autojs.org/
在线文档:https://hyb1996.github.io/AutoJs-Docs/#/
专业版地址:https://pro.autojs.org/
安装
免费版在百度上搜索autojs.apk,下载后即可安装,免费版已更新至4.1.1Beta并且不再更新。最新版已经开始收费,下载地址:https://pro.autojs.org/
开启手机无障碍服务
在某些版本上打开音量上键停止所有脚本,防止死循环脚本(我所使用的版本上默认开启)
打开悬浮窗进行布局分析
悬浮窗功能
编辑环境配置
autojs软件提供了非常好的手机端编写支持,拥有强大的提示功能,基本上我们在手机端进行编写也是非常舒适的。同时有VS Code 插件可提供基础的在桌面开发的功能。免费版我们下载:Auto.js-VSCodeExt
根据我们安装的版本进行选择
插件命令:
按Ctrl+Shift+P或点击“查看”->“命令面板”可调出命令面板,输入Auto.js可以看到以下命令:
Start Server: 启动插件服务。之后在确保手机和电脑在同一区域网的情况下,在Auto.js的侧拉菜单中使用连接电脑功能连接。
Stop Server: 停止插件服务。
Run: 运行当前编辑器的脚本。如果有多个设备连接,则该所有设备运行。
Rerun: 停止当前文件对应的脚本并重新运行。如果有多个设备连接,则该所有设备重新运行。
Stop: 停止当前文件对应的脚本。如果有多个设备连接,则该所有设备停止。
StopAll: 停止所有正在运行的脚本。如果有多个设备连接,则在所有设备运行所有脚本。
Save: 保存当前文件到手机的脚本默认目录(文件名会加上前缀remote)。如果有多个设备连接,则在所有设备保存。
RunOnDevice: 弹出设备菜单并在指定设备运行脚本。
SaveToDevice: 弹出设备菜单并在指定设备保存脚本。
New Project(新建项目):选择一个空文件夹(或者在文件管理器中新建一个空文件夹),将会自动创建一个项目
Run Project(运行项目):运行一个项目,需要Auto.js 4.0.4Alpha5以上支持
Save Project(保存项目):保存一个项目,需要Auto.js 4.0.4Alpha5以上支持
使用vscode进行开发
在命令面板选择Start Server启动服务,右下角会显示Auto.js server running
将手机与电脑连接到同一个WiFi,查看电脑的IP地址。在手机端AutoJS侧边菜单中选择远程调试,并输入电脑IP,vscode中会显示连接成功
AutoJS侧边栏设置
vscode右下角
vscode中创建JS文件,按F5或者选择Run命令,即可在手机端进行运行
在vscode命令面板中选择Save,将自动发送并保存到手机上
常用命令及函数
auto.waitFor()
检查无障碍服务是否已经启用,如果没有启用则跳转到无障碍服务启用界面,并等待无障碍服务启动;当无障碍服务启动后脚本会继续运行。
app.launchApp(appName)
appName {string} 应用名称
通过应用名称启动应用。如果该名称对应的应用不存在,则返回false; 否则返回true。如果该名称对应多个应用,则只启动其中某一个。
UiSelector.text(str)
str {string} 控件文本
返回 {UiSelector} 返回选择器自身以便链式调用
为当前选择器附加控件"text等于字符串str"的筛选条件。
控件的text(文本)属性是文本控件上的显示的文字,例如微信左上角的"微信"文本。
UiSelector.textContains(str)
str {string} 要包含的字符串
为当前选择器附加控件"text需要包含字符串str"的筛选条件。
这是一个比较有用的条件,例如QQ动态页和微博发现页上方的"大家都在搜…."的控件可以用textContains("大家都在搜").findOne()来获取。
bounds()
返回 Rect
返回控件在屏幕上的范围,其值是一个Rect对象
findOne(selector)
selector UiSelector
返回 UiOobject
根据选择器selector在该控件的子控件、孙控件…中搜索符合该选择器条件的控件,并返回找到的第一个控件;如果没有找到符合条件的控件则返回null。
其他API请看官方文档。要注意控件的click函数不一定会生效,因此推荐使用全局点击click函数。
京东签到领京豆
开启AutoJS的悬浮窗
打开京东商城APP
选择AutoJS悬浮窗的布局分析
选择布局分析
布局范围分析
点击领京豆
生成代码
查看text、id、desc,也可以选择生成代码
上面我们看到生成代码失败了,那么就要查看控件信息,发现底下text属性为“领京豆”
然后我们就可以在代码中使用text('领京豆'),来获取这个控件了。
具体的安装及使用以及介绍完了,接下来就是按照API来调试我们的程序了。
目前最新版的AutoJS Pro已经是付费制了,但是免费版的在百度依然能搜到,打开百度,搜索autojs.apk,可以下载比较新的版本使用,基本上也能满足我们很多需求。另外论坛已经停止更新了,但是我们依然可以在上面搜索到一些脚本。当然直接在GitHub上就可以搜索到更多的脚本。