广州茄子科技有限公司
一点课 内训师

基于Auto.js手机端自动化测试的自学报告

背景:

在工作和生活上,每个人总会遇到一些不想做,但无法拒绝的事情或者任务。

所以我们总是想方设法,“复制”多一个“自己”,来帮我们完成这些事情。

之前一直和雄仔研究用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中看到实现方法。

功能介绍:
  1. 数据监控:可以监视当前手机的数据。
  2. 图片监控:截图获取当前页面信息。
  3. 控件操作:模拟操作手机控件。
  4. 自动化工作流:编写简单的脚本,完成一系列自动化操作。如:微信/QQ自动点赞,快速抢单等。
  5. 定时功能:定时执行某个脚本,来完成定时任务。如:定时打卡签到等
项目介绍:

手机安装使用步骤:

① 开启无障碍服务

② 音量上键停止脚本:当脚本处于无法停止的状态时,使用音量上键强制停止脚本。

③ 开启悬浮窗:

悬浮窗有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”

获取下载链接。

赞(4) 打赏
未经允许不得转载:广州茄子科技有限公司 » 基于Auto.js手机端自动化测试的自学报告
分享到: 更多 (0)
标签:

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏