代码编织梦想

1. 概述

提到蚂蚁森林,大家应该都知道,你是否有因忘记收取能量而被好友收取的经历呢?
在这里插入图片描述
如果你不是蚂蚁森林重度用户,被别人收取了能量可能对你来说没什么。
在这里插入图片描述
但如果你是蚂蚁森林重度用户,遇到能量被偷 …

本文我们来看一下如何使用 Python + Appium 实现定时自动化收取蚂蚁森林能量。

2. 环境

本文主要环境如下:

  1.Win7
  2.小米5s
  3.Python3.7
  4.Appium1.5
  5.支付宝10.2.6.7010

如果对环境搭建不熟悉的话,可以看一下:Python + Appium 自动化操作微信入门和我用 Python 找出了删除我微信的所有人并将他们自动化删除了。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:810735403

3. 实现

功能实现的基本思路为:

 1. 打开支付宝进入蚂蚁森林,收取自己的能量
 2. 收取完自己能量后,点击找能量进入好友蚂蚁森林,收取好友能量,以此类推

在这里插入图片描述
接下来我们看一下主要代码实现。

参数配置代码实现如下:

desired_caps = {
    "platformName": "Android", # 系统
    "platformVersion": "8.0.0", # 系统版本号
    "deviceName": "m5s", # 设备名
    "appPackage": "com.eg.android.AlipayGphone", # 包名
    "appActivity": "AlipayLogin", # app 启动时主 Activity
    'noReset': True # 保留 session 信息,可以避免重新登录
}

通常大家都会将蚂蚁森林放在支付宝首页,此时我们打开支付宝后直接点击蚂蚁森林选项即可进入。
在这里插入图片描述
代码实现如下:

driver.find_elements_by_id('com.alipay.android.phone.openplatform:id/home_app_view')[10].click()

进入自己蚂蚁森林之后,开始收取自己的能量,因为新版支付宝不能定位能量球元素了,所以我们需要在能量球可能出现的区域实现点击。收取能量的代码实现如下:

# 收取能量
def collect_energy(driver):
    print('开始收取能量')
    # 获取手机屏幕宽高
    width = int(driver.get_window_size()['width'])
    height = int(driver.get_window_size()['height'])
    # 能量球可能出现的区域坐标
    start_x = 110
    end_x = 940
    start_y = 460
    end_y = 880
    for i in range(start_y, end_y, 80):
        for j in range(start_x, end_x, 80):
            tap_x1 = int((int(j) / width) * width)
            tap_y1 = int((int(i) / height) * height)
            # 点击指定坐标
            driver.tap([(tap_x1, tap_y1), (tap_x1, tap_y1)], 1000)
    print('能量收取完毕')

自己能量收取完毕之后,点击找能量进入好友蚂蚁森林继续收取能量,代码实现如下:

# 找能量
def search_energy(driver):
    print('找能量,收取好友能量')
    time.sleep(3)
    # 点击找能量
    driver.tap([(1000, 1520), (1080, 1580)], 1000)
    time.sleep(3)
    # 收取好友能量
    collect_energy(driver)
    time.sleep(3)
    # 收取完毕继续找能量
    search_energy(driver)

能量收取的功能实现了之后,我们使用定时任务实现定时收取即可,下面看一下定时任务的实现。
定时任务的实现我们使用 apscheduler 组件,使用之前需执行 pip install apscheduler 装一下。
定时任务的代码实现如下:

scheduler = BlockingScheduler()
# collect_main:定时执行的方法
scheduler.add_job(collect_main, 'cron', hour=20, minute=23, second=20)
try:
    scheduler.start()
except (KeyboardInterrupt, SystemExit):
    pass

到此,我们利用 Python + Appium 实现定时自动化收取蚂蚁森林能量的工作就完成了。

在这里还是要推荐下我自己建的Python开发学习群:810735403,群里都是学Python开发的,如果你正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/weixin_46737755/article/details/111088451

python爬虫之正则表达式的运用-爱代码爱编程

一.什么是正则表达式? 通俗的理解就是对于一个目标串,我们通过正则表达式制定的一些规则和用法可以对这个目标串进行子串的模式匹配从而获得我们想要的数据,正则表达式能高效灵活的提取数据 二.使用正则表达式 A.库文件 python的标准库当中re库包含了正则表达式的用法 我们只需要调用即可 import re B.常用的函数 1.search函

硬核!三千字肝了一晚上的数据结构线性表最全总结,超详细!-爱代码爱编程

已同步微信公众号: 乐享Coding 期待你的关注! 文章目录 前言线性表:零个或多个数据元素的`有限`序列。抽象数据类型定义顺序存储结构(数组)结构代码三个属性:定义函数类型Status,其值是函数结果的状态码获得元素操作插入元素操作删除元素操作优点缺点链式存储结构(链表)获得元素操作插入元素操作删除元素操作优点缺点 前言

Python数组排序——日常学习记录-爱代码爱编程

**程序的功能:**输入一个随机的数组,然后随机插入一个数字之后对数组进行排序。 这次遇到了一个数据类型转换的问题。 if __name__ == '__main__': n = int(input("Please Input the D is:\n")) a = [] for i in range(n): a.a

贝叶斯算法对PDF文档归类-爱代码爱编程

前段时间看到有个群在招文档分类志愿者,主要工作是把各个渠道收集到的分析报告(PDF格式)进行分类整理,就想起来机器学习中有个朴素贝叶斯算法正好是处理这种语言文字分类的利器,于是决定写一个分类的脚本来玩玩儿。 整个处理思路大致如下: 1、获取PDF文档中文字内容另存在TXT文件(pdfminer) 2、对TXT文件分词并获取特征向量(jieba) 3

3个独一无二的机器学习Python库-爱代码爱编程

Python有大量广泛应用于数据科学的软件包,其中部分工具旨在实现机器学习算法。我将介绍一些新的软件包,您以前可能从未听说过这些工具,或者用得很少。这些库使机器学习算法的选择变得更快和更容易。如果您想了解更多重要的机器学习Python库,请继续阅读,它们并不是scikit-learn,TensorFlow。我们将讨论PyCaret,pickle和Imbal

用pygame做一个简单的python小游戏---七彩同心圆-爱代码爱编程

用pygame做一个简单的python小游戏—七彩同心圆 这个小游戏原是我同学python课的课后作业,并不是很难,就简单实现了一下,顺便加强一下pygame库的学习。 玩法:每次点击鼠标时,会以鼠标为圆心,不断向外扩展圆(类似于水波浪的扩散),从而形成一个同心圆,并达到随机大小后停止扩展。其中每个同心圆的颜色都是随机的。 效果图: 代码实现:

day18.用户交互Scanner-爱代码爱编程

用户交互Scanner 今天呢,我们进入基础学习的第二阶段,我们刚学会了语法,但我们还不懂操作,学完这一阶段,我们差不多就可以自己做一些像计算器的小程序了 流程控制 我们这一章要学习流程控制,那我们看看流程控制需要学哪些东西 第一步,我们要学习用户交互的Scanner对象,之前我们学的基本语法只是在IDEA里面输出一下让我们看到,而Scanne

Java工程师进阶之路 - 模块五(Java新特性和项目)-爱代码爱编程

Java新特性和项目 任务一:常用设计原则和设计模式 第一节:常用的设计原则(记住) 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级常用的设计原则 开闭原则(Open Close Principle) 对扩展开放对修改关闭,为了使程序的扩展性好,易于维护和升级。 里氏代换原则(Liskov Sub

c++笔记_类型转换-爱代码爱编程

类型转换 前言一、隐式转换1.何时发生隐式类型转换二、算术转换三、整型提升四、其他隐式类型转换1.数组转换成指针2.指针的转换3.转换成布尔类型4.转换成常量5.类类型定义的转换二、显示转换1.命名的强制类型转换一.static_cast二.const_cast2.旧式的强制类型转换总结 前言 C++语言中,某些类型之间有关联。如果两种类型有

Python(for和while)循环嵌套及用法【小白学习Python必备知识】-爱代码爱编程

Python 不仅支持 if 语句相互嵌套,while 和 for 循环结构也支持嵌套。所谓嵌套(Nest),就是一条语句里面还有另一条语句,例如 for 里面还有 for,while 里面还有 while,甚至 while 中有 for 或者 for 中有 while 也都是允许的。 当 2 个(甚至多个)循环结构相互嵌套时,位于外层的循环结构常简称为

Java入门(代码块)-爱代码爱编程

代码块(初始化块) 代码块的作用: 用来初始化类或对象 内部可以有输出语句,比如在{}之间加入System.out.println()语句 静态代码块: static{}对于静态代码块,随着类的加载而执行静态代码块只执行一次静态代码块的执行要优先于非静态代码块的执行静态代码块内只能调用静态的属性,方法,不能调用非静态的非静态代码块: {}非静态

你们都是如何学 Python 高薪就业的?赶紧学习吧!-爱代码爱编程

本文主要分为 3 个部分: 1.Python思维导图,掌握Python基础2.Python学习资料,整理优质学习网站3.Python书籍资料,从入门到精通一.Python思维导图 1.基础知识图包括了基本规则、python语言特点、计算机语言、如何运行Python、变量赋值五个方面,辅助你快速掌握Python编程的基底知识 面对对象编程是一个非常重要的