2020年双十一某宝领喵币-------Autojs

前言

去年双十一第一次听说autojs,当时也尝试写过,那种模拟点击的,感觉体验很差。今天心血来潮吧,写一下。

软件介绍:当然是作者写的好了文档git仓库,对ES6支持貌似还有不足,因此大部分使用ES5语法。

逻辑

其实逻辑很简单!

怎么写?

这里假设已经给autojs打开了无障碍。会连vscode。

打开淘宝

参考连接link,下面很多内容手册里都有的。

if (currentPackage() != "com.taobao.taobao") {
  launchApp("手机淘宝");
}

这里要说明一下:com.taobao.taobao是通过autojs的悬浮窗获取的。

获取主页面的点击入口

这时,就要开始用到控件了。打开淘宝主页面后,通过悬浮窗的第三个圈圈,通过“布局范围分析”和“布局层次分析”最终确定要选择的是哪一个控件。精挑细选,最终找到了这个可以点击的控件。

var target = className("android.widget.FrameLayout").depth(11).clickable(true).editable(false).findOne();
target.click();

第二个页面的控件

方法和上面说的一样

className("android.widget.Button").text("赚喵币").depth(15).findOne().click()

收喵币按钮点击

这里遇到了点问题,需要判断左侧是不是能靠脚本完成的,比如邀请好友,这选项就需要跳过。这里逻辑是这样的,选择所以任务的list控件,然后遍历child,看是否是能完成的任务,如果不是就跳过。

if (!list) {
  list = className("android.widget.ListView").depth(15).findOne();    //获取list
}
var listitem = null;
for (var i = 0; i < list.childCount(); i++) {
  listitem = list.child(i);
  var title = listitem.child(0).child(0).text();
  var work = listitem.child(1).text();
  if (title.indexOf("邀请好友") != -1) {                             //邀请好友,跳过
    continue
  }
  if (work.indexOf("去完成") != -1 || work.indexOf("去浏览") != -1) {   //能做的,就点,点完跳出循环
    listitem.child(1).click();
    break;
  }
  if (i + 1 == 7) {                                    //此时循环完了,表示没有能做的了
    toast("完成任务");
    exit();
  }
}

贴一张层次图,应该更清楚。

等待返回

这里就是等文字变化了,就触发返回。要注意的是,这里的控件有多种形式。其中有任务完成 特别迷惑人,不仔细看很难发现这四个字前面有空格。

var flag = text("全部完成啦").exists() || text("任务已完成").exists() || text("任务完成").exists() || desc(" 任务完成").exists() || desc("任务完成").exists() || desc("任务已完成").exists() || desc("全部完成啦").exists();
if (flag) {
  back();
}

完整代码

整个写在了setInterval间隔函数中。隔2s进行一次判断。

toast("脚本开始运行");

if (currentPackage() != "com.taobao.taobao") {
  launchApp("手机淘宝");
}

var list = null;
setInterval(function () {
  if (currentPackage() != "com.taobao.taobao") {
    toast("请进入淘宝主页面");
  } else {
    if (currentActivity() == "com.taobao.tao.TBMainActivity") {
      console.log("进入了主页面");                  //目前在淘宝主页面
      var target = className("android.widget.FrameLayout").depth(11).clickable(true).editable(false).findOne();
      target.click();
    } else if (currentActivity() == "com.taobao.browser.BrowserActivity") {
      console.log("进入了分页面");              //进入到了分页面,这里是指的刚开始四个连图的第三个  
      if (text("累计任务奖励").exists()) {      //累计任务奖励是任务列表上方的那几个字
        if (text("领取奖励").exists()) {        //累计任务奖励后面的奖励领取
          text("领取奖励").findOne().click();
        }
        // 整个任务列表
        if (!list) {
          list = className("android.widget.ListView").depth(15).findOne();
        }

        var listitem = null;
        for (var i = 0; i < list.childCount(); i++) {   //任务列表循环
          listitem = list.child(i);
          console.log(i, listitem);
          var title = listitem.child(0).child(0).text();
          var work = listitem.child(1).text();
          if (title.indexOf("邀请好友") != -1) {
            continue
          }
          if (work.indexOf("去完成") != -1 || work.indexOf("去浏览") != -1) {
            listitem.child(1).click();
            break;
          }
          if (i + 1 == 7) {
            toast("完成任务");
            exit();
          }
        }
      } else if (className("android.widget.Button").text("赚喵币").exists()) {     //四个连图的第二个
        className("android.widget.Button").text("赚喵币").depth(15).findOne().click()
      }
    } else {
      console.log("进入了店铺");
      var flag = text("全部完成啦").exists() || text("任务已完成").exists() || text("任务完成").exists() || desc(" 任务完成").exists() || desc("任务完成").exists() || desc("任务已完成").exists() || desc("全部完成啦").exists();
      if (flag) {                                   //flag为true就表示喵币到手了
        back();
      }
    }
  }
}, 2000);

最后附上打包的apk 蓝奏云 . 密码:5xe2

文章来源:link

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值