2022 auto.js实现淘宝双十一活动自动完成 解放双手(简单版)

淘宝双十一活动自动完成 解放双手

刚开始学js和autojs,里面还有很多bug,希望大佬可以完善一下或者写个好一点的供大家学习学习嘿嘿
更新于 2022.11.08

第一步 下载安装auto.js

具体方法看我之前的文章

第二步

新建文件,将一下代码复制进去,保存运行。
运行之前注意打开悬浮窗权限和无障碍权限。

//淘宝双十一双for循环脚本代码
//更新于2022.11.08 21点04分
//版本 v1.2.0
 
auto(); // 自动打开无障碍服务

// 所有操作都是竖屏
const WIDTH = Math.min(device.width, device.height);
const HEIGHT = Math.max(device.width, device.height);
// const IS_ROOT = files.exists("/sbin/su") || files.exists("/system/xbin/su") || files.exists("/system/bin/su");

setScreenMetrics(WIDTH, HEIGHT);

requestScreenCapture(false);    //请求竖屏截图

console.show()  //控制台可视化


// 监听音量下键
function registerKey() {
    try {
        events.observeKey()
    } catch (err) {
        console.log('监听音量键停止失败,应该是无障碍权限出错,请关闭软件后台任务重新运行。')
        console.log('如果还是不行可以重启手机尝试。')
        quit()
    }
    events.onKeyDown('volume_down', function (event) {
        console.log('淘宝任务脚本停止了')
        console.log('请手动切换回主页面')
       
        quit()
    })
}
threads.start(registerKey)  //开启监听音量键线程

// 打开淘宝进入活动
function openAndInto() {
    console.log('正在打开淘宝App...')
    app.launchApp("淘宝");
    sleep(1500)
    toastLog("请自行进入到活动界面")
    sleep(3000)
    log("任务开始")
    // sleep(6000)
    // click(775,1180) 
    // log("正在进入活动界面");
    className("android.widget.Button").text("去赚能量").findOne().click()
    log("查看任务完成情况");
    sleep(2000);

}

function doTask(){
    
    
    if(textContains("签到").exists()){
        textContains("去完成").findOnce().click();
        log("已签到");
        sleep(1000)
    }
    if (!textContains("浏览15秒").exists()) {
        //log(textContains("去完成"))
        log("未发现可完成任务")
        log("程序退出")
        exit()
    }
    console.log("发现可浏览任务");
    sleep(1000)

    //截图
    // var img = captureScreen();
    // console.log("请求截屏");

    sleep(500)
    var taskList = textContains("浏览15秒").find()  //找到所有包含该文字的标签
    var taskListOffsetY = [];
    //将y值全部放入到taskListOffsetY数组中
    taskList.forEach(task => {
        taskListOffsetY.push(task.bounds().top)
    });
    //console.log("taskListOffsetY:" + taskListOffsetY);

    var toFinish = textContains("去完成").find()  //找到所有包含该文字的标签
    var toFinishCenterY = [];   //存放去完成按钮的中心y坐标
    //将去完成中心坐标y值全部放入到toFinishCenterY数组中
    toFinish.forEach(task => {
        toFinishCenterY.push(task.bounds().centerY())
    });
    //console.log("toFinishCenterY:" + toFinishCenterY);

    // var taskListOffsetY = 
    loop:
    for (let i = 0; i < taskListOffsetY.length; i++) {
        for (let j = 0; j < toFinishCenterY.length; j++) {
            if (Math.abs(taskListOffsetY[i] - toFinishCenterY[j]) < 10) {
                click(850,toFinishCenterY[j]) //点击去完成
                log("点击去完成(850,"+toFinishCenterY[j]+")");
                break loop;
            }
        }
    }
    
    sleep(15000);   //浏览15秒
    // 等待任务完成文本出现
    var count = 0
    while(true){
        if (textContains("任务完成").exists() || textContains("下单可获得额外喵果").exists() || textContains("去完成").exists()|| textContains("任务已经全部完成啦").exists()){
            log("任务完成");
            break
        }
        if (textContains("宝贝口袋").exists() && textContains("购物车").exists()) {
            sleep(300)
            console.log("检测到在直播间购物车中");
            sleep(500);
            back();
        }
        if (textContains("挑战幸运飞行任务").exists()) {
            sleep(300)
            console.log("检测到游戏,直接返回");
            sleep(500);
            back();
            break;
        }
        if(count>5){
            console.log("未发现任务完成文本,强制返回");
            // sleep(1000)
            break
            // back()
        }
        console.log("请等待"+ (5-count));
        sleep(1000)
        count++
    }
    //sleep(500)
    delete taskList,taskListOffsetY,toFinish,toFinishCenterY

}

function main(){
    registerKey()
    openAndInto()
    toast("请先进入到活动界面");
    sleep(5000)
    while (true){
        doTask()
        back();
        sleep(1000)
    }
}
main();
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值