自动化篇 | 实现自动化抢茅台超详细过程!

【自动化篇 | 实现自动化抢茅台超详细过程!】点击上方 “”,选择 “加为星标”
第一时间关注原创干货!
1. 前言
大家好,我是安果!
最近,随着 i 茅台 App 的上线,国内再次掀起了「抢茅台」的浪潮,每天早上 9-10 时可以通过 App 进行申购,晚上 18 点后会公布当天的申购结果
虽然中签率很低,但是和打新一样,没有任何成本,只需要随手点一下,就有一定的几率会中签,带来一定的收益
本篇文章将通过下面几点聊聊自动化抢茅台、查询申购结果的完整详细流程
2. 自动化申购
自动化方案这里选择 ,基础教程可以看下面这篇文章
推荐一款好用且能兼职赚钱的自动化工具 -
2-1 打开应用并进入到主界面
在开发阶段可以通过.show() 开启日志悬浮窗
首先,通过应用名称打开 App
然后,通过主界面特有的文本元素进行等待,直到界面完全加载完全
...//阻塞等待function wait_come_home_page(){//等待加载到主页textContains('首页').waitFor();textContains('申购').waitFor();log("完全进入到主页")}...function purchase_buy(){//打开日志控制台console.show();//打开ApplaunchApp('i茅台');//进入主页wait_come_home_page()...
2-2 进入申购 Tab并寻找入口
首先,通过文本内容找到底部的「 申购」Tab,执行点击操作
然后,循环滑动屏幕,查找页面中所有的申购入口

自动化篇 | 实现自动化抢茅台超详细过程!

文章插图
PS:由于申购数目有限,为了方便,这里默认最多滑动 5 次
...//根据文本内容查找元素,并执行点击操作function click_text_element(content,is_wait){//是否需要等待if(is_wait){textContains(content).waitFor();}log("等待元素加载完成,继续点击操作 。。。")//查找元素var buy_element = text(content).findOne()if(buy_element){click(buy_element.bounds().centerX(), buy_element.bounds().centerY());}}...//进入【申购】Tabclick_text_element("申购",is_wait=false)let index = 0;while(index<5){//滑动一次swipe(450, 1500, 450, 450, 500) ...index+=1;}...
2-3 进入申购页面
遍历申购列表中的所有入口按钮控件,判断控件的文本内容,当控件的文本内容为「 预约申购」时才进行预约动作
...var good_enterences = id("bt_goods").find() log("本次入口有:",good_enterences.length)//商品标题for(let good_enterence of good_enterences){log("文本:",good_enterence.text())if(good_enterence.text()==='预约申购'){good_enterence.click()...}else{log("该条已经申购,过滤掉 。。。")}}...
2-4 确认申购
在确认申购前,我们需要先选择一个门店,我们需要做一个等待操作,直到页面元素完全加载成功
由于抢到即是赚到,为了省事,我这里直接从默认门店列表中取第一个门店为取货地址,确定申购后,我们点击「 查看详情」按钮进行到申购详情页面
PS:考虑到不同门店可能存在概率不一样的情况,大家可以根据实际需求自行拓展,选择一个合适的门店作为取货地址
最后,模拟按压返回键,直到回退到 App 的首页
...//返回到应用首页function back_main_page() {//判断是否在主界面while (true) {if (textContains('首页').exists()&&textContains('申购').exists()&&textContains('个人').exists()) {break;} else {back();}sleep(1000)}}...//真实预约function real_buy(){log("确定开始申购")//等待【选择门店】页面加载完全id("btReserve").waitFor()//由于抢到即使赚到,这里直接取默认地址的第一个id("btReserve").click()//确定申购text("确定申购").findOne().click()//点击【查看详情】,返回申购列表text("查看详情").findOne().click()//返回back_main_page()}...