背景:
在工作和生活上,每个人总会遇到一些不想做,但无法拒绝的事情或者任务。
所以我们总是想方设法,“复制”多一个“自己”,来帮我们完成这些事情。
之前一直和雄仔研究用chrome+selenium+python来实现自动化操作,虽然基本达到预期效果,但网站cookie只有4小时,4小时要登录一次,达不到全自动化要求。。。
就在我和 bearboy一筹莫展的时候,我的小情人降临了,哈哈。。。所以就把这个项目搁置了一段时间。
最近自己改变了一下思路,不在PC端执行,改在app端,然后到处找资料,果然被我发现了这个auto.js的项目了。 看过介绍文档觉得比较有意思,就看着api学了几天,和雄仔写了几个自用的小脚本。很好上手,如果稍掌握一点js,将会很快可以写好并付诸使用。下文会予以简要介绍,并有部分学习资料便于快速上手。
所以说,有时候想问题,想不通,不妨放一放,过段时间再来想(时间允许的话)。还有,身边最好有个学伴跟你讨论,一起(互)学(叼)习,一起(吹)进(捧)步,一个人容易钻牛角尖,还好有bearboy。
介绍:
Auto.js是一款安卓应用,针对安卓7.0以上机型,它可以无需root执行脚本。主要是运用系统自带的“无障碍服务”来获取页面的,这是个亮点,但有个缺陷就是每次关闭 Auto.js 这个app后都要重新开启“无障碍服务”,颇为繁琐。
因为接触的时间有限,js使用不熟等原因,以我目前的认识及需求,使用这个软件主要的方式是:通过获取页面的 布局、控件属性、point的颜色 来实现定位到具体坐标,从而实现自动化的效果。 软件还支持获取安卓系统的传感器信息、读写文件、发送接收网络请求等,感兴趣可以在api中看到实现方法。
功能介绍:
- 数据监控:可以监视当前手机的数据。
- 图片监控:截图获取当前页面信息。
- 控件操作:模拟操作手机控件。
- 自动化工作流:编写简单的脚本,完成一系列自动化操作。如:微信/QQ自动点赞,快速抢单等。
- 定时功能:定时执行某个脚本,来完成定时任务。如:定时打卡签到等
项目介绍:
- 项目地址:https://github.com/hyb1996/Auto.js
- 官方论坛:https://www.autojs.org/
- 在线文档:https://hyb1996.github.io/AutoJs-Docs/#/
- 简介:一个支持无障碍服务的Android平台上的Javascript IDE,其发展目标是JsBox和Workflow。
- 主要功能:由无障碍服务实现的简单易用的自动操作函数
- 协议:基于Mozilla Public License Version 2.0
手机安装使用步骤:
① 开启无障碍服务
② 音量上键停止脚本:当脚本处于无法停止的状态时,使用音量上键强制停止脚本。
③ 开启悬浮窗:
悬浮窗有4个控件:
1)脚本列表
2)自动录制
3)布局范围分析
与 布局层次分析
获取页面元素、控件:
以今日头条为例,点击悬浮窗中的“布局范围分析”
选取你需要的元素,长按
点击查看控件,就会显示该控件信息,然后我们就可以利用了。
关于脚本
以腾讯新闻极速版为例,简单介绍一下思路:
首先打开app,如果不是首页的要先回到首页:
app.launchApp("腾讯新闻极速版");
backHomePage(8);
function backHomePage(flag) {
log("返回主页函数调用次数" + flag)
if (flag < 0) {
start();
} else if (!isHomePage()) {
back()
sleep(1500)
backAndEnter(--flag)
}
}
function isHomePage() {
//判断有无评论组件,防止把视频新闻页面误判为首页
return currentActivity() === "com.tencent.news.activity.SplashActivity" && id(assemblyId.isHomePage).findOne(200) == null;
获取新闻列表,点击进入新闻页面,判断有没有红包,没有的话返回首页,刷新新闻后重新进入新闻页面:
var ar = id(assemblyId.newList).find();
ar.get([num]).parent().click();
if (id(assemblyId.redPacket).exists()) {
sleep(1000);
toNextNew();
} else {
backAndEnter(8)
refreshNews()
}
如果有红包,则使用swipe模拟滑动到页面最底部,等待红包打开后,上拉进入下个新闻:
scrollDown();
log("滑动完成,等待红包")
waitTipOpen(500);
log("判断暂无相关内容")
if (text("暂无相关内容").exists()) {
backAndEnter(8);
refreshNews();
} else {
randomSwipeDown(1000, 300);
readNews();
}
//滑动到最后
function scrollDown() {
while (!(text("查看更多评论").exists() || id(assemblyId.sofa).exists())) {
if (waitArr[waitFlag]) {
sleep(waitArr[waitFlag++])
}
randomSwipeDown(1100, 300);
}
}
//等待红包打开,超过8秒未打开则继续
function waitTipOpen(i) {
if (id(assemblyId.redPacket).exists() && i > 0) {
sleep(10);
waitTipOpen(--i);
}
}
注:我和bearboy的一些脚本代码由于涉及到灰色产业,纯自用,这里就不作分享了。
最后
auto的优点:
1)开源:代码开源,可以查到源码。
2)无需root:Android 7.0以上功能基本不需要root。
3)免费。
4)易用:代码自动生成。
5)语言:标准的JS语法。
6)灵活。
7)扩展:提供JS转JAVA桥梁,存在无限多的扩展。
提倡自动动手编写Auto.JS脚本
1)安全:Auto.JS脚本拥有很大的权限,使用他人的脚本可能存在风险。
2)编写简单:JS 脚本嵌套中文,方便阅读和书写。
3)脚本升级:一旦APP版本升级,原脚本可能不使用了。
4)提升自己的编写代码能力和解决问题能力。
软件下载
请关注公众号:茄子研究所
回复:“autojs”
获取下载链接。
评论前必须登录!
注册