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

这篇具有很好参考价值的文章主要介绍了Python自动化篇 | 实现自动化抢茅台超详细过程!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 前言

最近,酱香拿铁的上市,国内再次掀起了「 抢茅台」的浪潮,每天早上 9-10 时可以通过 App 进行申购,晚上 18 点后会公布当天的申购结果

虽然中签率很低,但是和打卡一样,没有任何成本,只需要随手点一下,就有一定的几率会中签,带来一定的收益

本篇文章将通过下面几点聊聊自动化抢茅台、查询申购结果的完整详细流程

  • 自动化申购

  • 自动化查询申购结果

  • 参数化及配置

  • 定时任务

  • 总结一下

2. 自动化申购

自动化方案这里选择 Hamibot

2-1 打开应用并进入到主界面

在开发阶段可以通过 console.show() 开启日志悬浮窗

首先,通过应用名称打开 App

然后,通过主界面特有的文本元素进行等待,直到界面完全加载完全

...  
//阻塞等待  
function wait_come_home_page(){  
    //等待加载到主页  
    textContains('首页').waitFor();  
    textContains('申购').waitFor();  
    log("完全进入到主页")  
}  
...  
function purchase_buy(){  
  //打开日志控制台  
  console.show();  
  
  //打开App  
  launchApp('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());  
    }  
}  
...  
//进入【申购】Tab  
click_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()  
}  
...  


2-5 发送信息到群聊中

申购完成后,我们可以将申购结果发送到群聊中

...  
function send_wx_msg(send_msg){  
    //如果休眠,唤醒设备  
    device.wakeUpIfNeeded()  
    app.launch("**");  
    text("*信").waitFor()  
    text("通讯录").waitFor()  
    sleep(2000)  
  
    //点击进入到聊天界面  
    var chat_element= id("fzg").text(group_name).findOne();  
  
    //获取坐标点  
    var chat_element_bounds = chat_element.bounds();  
  
    click_many_times(chat_element_bounds,id("auj").className("EditText"))  
    sleep(3000)  
  
    //1--发送消息  
    id("auj").className("EditText").findOne().setText(send_msg)  
    sleep(3000)  
    //发送  
    text("发送").click()  
    sleep(1000)  
  
    //3- 返回  
    back_to_home()  
    home();  
    exit()  
}  
...

3. 申购结果


3-1 打开应用并进入到主页

和上面申购的代码一样

3-2 进入到申购记录列表页面

...  
function click_desc_element(content,is_wait){  
    //是否需要等待  
    if(is_wait){  
         descContains(content).waitFor();  
    }  
    log("等待元素加载完成,继续点击操作。。。")  
    //查找元素  
    var buy_element = desc(content).findOne()  
    if(buy_element){  
        click(buy_element.bounds().centerX(), buy_element.bounds().centerY());  
    }  
}  
...  
//点击【个人】Tab  
click_text_element("个人",is_wait=false)  
  
//点击申购单  
click_desc_element("申购单",is_wait=true)  
...  


3-3 查询列表元素,获取所有子元素列表,筛选出当天所有申购记录

首先,通过 id 获取页面中的列表控件及其子元素列表

然后,遍历子元素列表,过滤出申购时间为当天的记录

最后,根据满足条件的记录,查询当条申购记录的状态

...  
//获取所有的item元素  
var rv_element= id("reservation_rv").findOne()  
  
//获取当前日期  
var current = get_today()  
console.log("当前日期:",current)  
  
//获取下面的所有子元素Item  
let result = ""  
  
if(rv_element){  
    var elements = rv_element.children()  
    for(let element of elements){  
          //获取预约时间  
        var time = element.findOne(id("date_time")).text()  
        if(time===current){  
            //获取结果  
            var status =element.findOne(id("draw_status")).text()  
            //品种  
            var title = element.findOne(id("mt_goods_name")).text()  
            console.log("种类:",title,",结果:",status)  
            result+="种类:"+title+",结果:"+status+"\n\n"  
         }  
      }  
  }   
...  


3-4 组装结果,回退到应用首页,并发送群聊

将当天所有的申购结果组装一下,回退到 App 首页,最后发送信息到目标群聊中

i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维

3-5 异步

将「 申购」、「 查询结果」两个动作定义为函数,放入到线程中执行,这样就完成了自动化脚本的开发

...  
//申购  
function buy_task(){  
            //定义子线程  
        threads.start(function(){  
         log("申购任务。。。")  
                purchase_buy()  
        })  
}  
  
//查询  
function result_task(){  
        threads.start(function(){  
               log("查询任务。。。")  
          purchase_result()  
        })  
}   
...

3-6 发布并安装

脚本开发完成后,在脚本控制台进行脚本发布,编辑产品基本信息后提交审核,审核完成后安装到脚本列表

PS:建议免费发布到私有地址,通过私有地址安装到脚本列表中

i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维
-END-


学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!

👉[CSDN大礼包:《python安装工具&全套学习资料》免费分享]安全链接,放心点击

👉Python学习大礼包👈

i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维

👉Python必备开发工具👈

i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维

👉Python书籍和视频合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维

👉Python面试刷题👈

i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维

👉Python副业兼职路线👈

i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维
i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以点击链接免费领取或者保存图片到wx扫描二v码免费领取保证100%免费

👉[CSDN大礼包:《python安装工具&全套学习资料》免费分享]安全链接,放心点击
i茅台自动申购脚本,python,自动化,开发语言,爬虫,php,大数据,运维文章来源地址https://www.toymoban.com/news/detail-829952.html

到了这里,关于Python自动化篇 | 实现自动化抢茅台超详细过程!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自动化测试、爬虫、秒杀抢购、数据获取新方案,利用docker镜像运行安卓云手机,同时模拟运行多个手机进行数据抓取,可实现火车票、演唱会门票、茅台、直播、iPhone手机自动下单等各种多任务

    自动化测试、爬虫、秒杀抢购、数据获取新方案,利用docker镜像运行安卓云手机,同时模拟运行多个手机进行数据抓取,可实现火车票、演唱会门票、茅台、直播、iPhone手机自动下单等各种多任务。 这里选择的是Redroid,ReDroid(Re mote an Droid)是一个 GPU 加速的 AIC(Android In

    2024年02月03日
    浏览(72)
  • 【史上最硬核分享】Docker+jenkinsPipeline 运行实现 python 自动化(超详细)

    在 Linux 服务器安装 docker 创建 jenkins 容器 jenkins 中创建 pipeline 项目 根据自动化项目依赖包构建 python 镜像(构建自动化 python 环境) 运行新的 python 容器,执行 jenkins 从仓库中拉下来的自动化项目 执行完成之后删除容器 Linux 服务器一台(我的是 CentOS7) 1、有云服务器的同学直接用

    2024年01月22日
    浏览(37)
  • 对个人博客系统进行web自动化测试(包含测试代码和测试的详细过程)

    目录 一、总述 二、登录页面测试 一些准备工作  验证页面显示是否正确  验证正常登录的情况 该过程中出现的问题 验证登录失败的情况  关于登录界面的总代码  测试视频 三、注册界面的自动化测试 测试代码 过程中出现的bug  测试视频 四、博客列表页测试 登录情况下的

    2024年02月05日
    浏览(36)
  • Python接口自动化搭建过程,含request请求封装

    接口测试自动化好处 显而易见的好处就是解放双手😀。 可以在短时间内自动执行大量的测试用例 通过参数化和数据驱动的方式进行测试数据的变化,提高测试覆盖范围 快速反馈测试执行结果和报告 支持持续集成和持续交付的流程 使用Requests+pytest+allure搭建测试框架的目的

    2024年02月07日
    浏览(54)
  • Selenium+Python自动化脚本环境搭建的全过程

    * 本文仅介绍环境的搭建,不包含任何脚本编写教程。 先整体说一下需要用到工具 1、Python环境(包括pip) 2、谷歌浏览器(包括对应的WebDriver) 详细步骤: 1、下载安装包 Python Releases for Windows | Python.org   下载完成过后,打开进行安装, 先把下面的add path打钩 ,然后一直下

    2024年01月17日
    浏览(65)
  • 利用Python子进程关闭Excel自动化过程出现的弹窗

    利用Python进行Excel自动化操作的过程中,尤其是涉及VBA时,可能遇到消息框/弹窗(MsgBox)。此时需要人为响应,否则代码卡死直至超时 1 2 。根本的解决方法是VBA代码中不要出现类似弹窗,但有时我们无权修改被操作的Excel文件,例如这是我们进行自动化测试的对象。所以本文

    2024年02月06日
    浏览(47)
  • 【网络安全-sql注入(5)】sqlmap以及几款自动化sql注入工具的详细使用过程(提供工具)

    分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取: 超详细的网络安全笔记 (也可以拿自己的环镜来玩,我是用pikachu靶场来演示的) 【网路安全 --- pikachu靶场安装】超详细的pikachu靶场安装教程(提供靶场代码及工具)_网络安全_Ai

    2024年02月08日
    浏览(53)
  • web自动化测试框架落地实施全过程-测试环境搭建 (Selenium+Python)

    Web自动化测试是指使用自动化工具模拟用户在Web浏览器中执行的操作,通过编写脚本来自动化执行测试用例,以验证Web应用程序的功能、性能和兼容性等方面的质量。其主要目的是降低测试成本和时间,并提高测试效率和准确性。 Web自动化测试通常包括以下步骤: 确定测试

    2024年02月09日
    浏览(88)
  • Python+Selenium自动化测试详细教程

       Python Selenium是Selenium WebDriver的Python语言封装,为Python开发者提供了一个方便易用的自动化测试库。它支持多种浏览器(如Chrome、Firefox、Edge等)以及多个操作系统,可以模拟用户在浏览器中的各种行为,包括打开网页、查找元素、输入文本、点击链接、提交表单、上传文

    2023年04月18日
    浏览(52)
  • b站第一,Python自动化测试实战详细教学,3天教你学会自动化测试

    目录 简介 Python自动化测试概述 Python自动化测试目标 Python自动化测试流程 1. 测试计划和设计 2. 测试脚本开发 3. 测试执行和管理 4. 测试维护和优化 Python自动化测试最佳实践 Python自动化测试工具和框架 结论 自动化测试是软件开发过程中一个必不可少的环节。而Python作为一门

    2024年02月03日
    浏览(46)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包