30行Python代码实现蚂蚁森林自动偷能量(附源码)

虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化。之前通过用代码模拟手机点按的方式,实现了 朋友圈自动点赞,但当时蚂蚁森林的操作流程要比朋友圈点赞复杂很多,所以当时就没有实现自动偷能量。不过我那篇博客评论下面有网友推荐了appium和uiautomator2这俩工具,最近抽空研究了下,发现用uiautomator2的话这事简单了好多,而且由于蚂蚁森林改版,连续偷能量的操作流程也简单了好多,于是乎我就实现了自动偷能量,效果如下:

接下来介绍下原理和实现方式,首先如果让你手动去收能量的话,你是什么流程?

1.打开支付宝
2.打开蚂蚁森林
3.先收取自己的能量
4.跳到下一个有能量的人哪
5.收取ta的能量
6.重复4和5,直到没有能量可以偷

很幸运的是,借助Uiautomator2,这些都可以自动化。UiAutomator是Google提供的用来做安卓自动化测试的一个Java库,可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。Uiautomator2是在Uiautomator之上的python的接口封装,简单来说 Uiautomator2可以看到手机当前屏幕上有哪些控件,其坐标是啥,并且还可以模拟点击。

Uiautomator2的安装和使用

详细可以参考下官方文档Uiautomator2 ,安装方式很简单,下面一条命令即可。

pip install --upgrade --pre uiautomator2

使用的话这里有几个坑,手机接入电脑前首先需要开启开发者模式,并开启USB调试,USB安装(如下图),这样才能保证uiautomator2有足够的权限操作你的手机。

第一次使用过uiautomator2后,它会在你手机上安装ATX这个应用,打开这个应用你就可以之后通过无线的方式操作你的手机了。

具体实现

如何打开支付宝并进入蚂蚁森林?

Uiautomator2可以直接通过应用包名调起应用d.app_start("com.eg.android.AlipayGphone"),啥?你不知道支付宝的包名?你可以安装Uiautomators2后用其命令行查看支付宝的包名,具体可以查阅其文档。

如何进入蚂蚁森林?Uiautomators2提供了直接点击屏幕某个文字的位置,d(text="蚂蚁森林").click()。所以建议你把蚂蚁森林放的支付宝首页,这样打开支付宝后就可以直接定位到蚂蚁森林的位置了。

收能量

目前定位到具体能量的位置,所以最简单的方式就是把所有能量可能出现的位置都扫一遍(如上图红框),然后点击找能量按钮跳到下一个人那继续扫荡。

如何停止

怎么停下来是个大问题,因为上面的逻辑都是模拟点击,如果不在合适的时机停下来,鬼知道它会给我按出什么东西。通过几次观察,我发现没有能量偷之后,支付宝会跳到下面这个页面上,这里只需要检查下"返回我的森林"按钮是否存在即可。

完整代码

完整代码很短,如下:


import uiautomator2 as u2
import time
import random
# d = u2.connect()  # 有线连接,手机需要插电脑上
d = u2.connect("192.168.0.108") #通过无线连接,电脑和手机需要在同一个局域网内,并且需要先用有线的方式做过初始化

# d.app_stop("com.eg.android.AlipayGphone") 

print("打开支付宝")
d.app_start("com.eg.android.AlipayGphone")
time.sleep(2) ## 休眠2s等待支付宝完全启动

print("打开蚂蚁森林,等待5s……")
d(text="蚂蚁森林").click()
time.sleep(5) ## 我手机比较卡,进入蚂蚁森林后还需要几秒钟才能完全加载完   

def collectEnergy(cnt):
    print("开始第%d次偷能量!" % cnt)

    # 开始扫描点击有能力出现的区域
    for x in range(150,1000,150):
        for y in range(600,900,150):
            d.long_click(x + random.randint(10,20), y + random.randint(10,20), 0.1)
            time.sleep(0.01)
            if cnt != 1:
                d.click(536,1816)

cnt = 1
while True:
    collectEnergy(cnt)
    a = d.xpath("//*[@resource-id='J_tree_dialog_wrap']").get().bounds
    d.click(1000, a[3]-80) # 找能量按钮的坐标 

    ## 如果页面出现了“返回我的森林”说明已经没有能量可偷了,结束
    if d.xpath('//*[@text="返回我的森林"]').click_exists(timeout=2.0):
        break
    cnt += 1
print("###结束###")
# d.app_stop("com.eg.android.AlipayGphone") # 退出支付宝

结语

抛开注释,真的不到30行代码,但建议用的时候还是低调点,别让你的好友知道你开了挂然后拉黑你。

(0)

相关推荐

  • 定位元素 | 白月黑羽教Python

    代码规则 点击这里,边看视频讲解,边学习以下内容 从示例代码,大家就可以发现,和Selenium Web自动化一样,要操作界面元素,必须先 定位(选择)元素. Appium是基于Selenium的,所 ...

  • Python教你迅速成为蚂蚁森林排行榜第一名

    最近在家远程工作,结果作息更混乱了 ,早上起不来,导致我蚂蚁森林能量天天被偷,严重影响我沙漠造树"大业" .于是我决定用python写个自动偷能量的程序,每天早上定时偷取好友能量, ...

  • 如何在蚂蚁森林给好友浇水?

    最近支付宝的集能量种树的活动,俗称"蚂蚁森林"是一项很好的公益活动,不过还可以给好友浇水,下面小编教一下大家如何做,顺便透露一下,小编可是有很多能量的,大家快来偷能量吧2333 首 ...

  • 用 Python 实现定时自动化收取蚂蚁森林能量

    用 Python 实现定时自动化收取蚂蚁森林能量

  • 【自动化测试】自动化测试框架与工具

    文章目录 1)什么是自动化测试框架? 1.1 什么是框架? 1.2 什么是自动化测试框架? 1.2.1 优点: 1.2.2 框架的基本组件 1.需要配置文件管理: 2.业务逻辑代码和测试脚本分离 3. ...

  • 支付宝蚂蚁森林各大种树所需能量对应值一览表

    支付宝蚂蚁森林种树是需要能量的,那么各种树多对应的能量值是多少才可以可以种树呢?支付宝蚂蚁森林各大种树所需能量对应值一览表 1.梭梭树所需能量:17900g 2.沙棘所需能量:18880g 3.沙柳所 ...

  • 30 行代码实现蚂蚁森林自动偷能量

    给Python开发者加星标,提升Python技能) 来源:CSDN- xindoo 虽然我支付宝加了好多好友,平时有很多能量可以偷,但由于太懒,至今一棵树都没种成,所以心心念念把偷能量这事自动化.之前 ...

  • 写点python代码实现下载百度空间文章(附源码)

    纯python新手写的关于下载百度空间文章python源码,代码写的不好,能用不能看.大家看看效果就行, 不要求代码的精简程度.大牛请飘过. 下载百度空间文章python源码使用方法: 在cmd中输入 ...

  • 30行Python代码从百度自动下载图片(附小白也能看懂的源码和exe程序)

    只需要30行代码就可以从百度自动下载图片 大家好,我是黑羽,一个专门教小学生撸Python的编程老师(小学生都能学会的编程) 这里想问大家三个问题 : - 你还在为批量下载表情包发愁吗? - 你还在为 ...

  • 女友半夜加班发自拍,IT男友用30行python代码发现惊天秘密

    点击上方"机器学习爱好者社区" 选择"星标"公众号,重磅干货,第一时间送达 这是一个悲伤的故事 昨天,我司的python开发小哥刚准备下班陪女友共进晚餐,满心期 ...

  • 什么,3行Python代码就能获取海量数据?

    Python爬虫与数据挖掘 1周前 以下文章来源于法纳斯特 ,作者小F 本文转载自公众号[法纳斯特],详情可以点击上方卡片,关注该公众号,获取更多好文推荐. 一谈起数据分析,首先想到的就是数据,没有数 ...

  • 6行python代码的爱心线

    前些日子在做绩效体系的时候,遇到了一件囧事,居然忘记怎样在Excel上拟合正态分布了,尽管在第二天重新拾起了Excel中那几个常见的函数和图像的做法,还是十分的惭愧.实际上,当时有效偏颇了,忽略了问题 ...

  • 10行Python代码的词云

    什么是词云呢? 词云又叫文字云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思. 现在 ...

  • 再见PDF提取收费!我用100行Python代码搞定!

    第471篇原创干货,第一时间送达 大家在日常的工作和学习过程中,都少不了与PDF文件打交道,很多的小伙伴都面临着将PDF文件中的文字.图片和表格数据提取出来的问题.能够对PDF文件中的文字.表格等数据 ...

  • 不到70行Python代码,轻松玩转RFM用户分析模型(附案例数据和代码)

    本文从RFM模型概念入手,结合实际案例,详解Python实现模型的每一步操作,并提供案例同款源数据,以供同学们知行合一. 注:想直接下载代码和数据的同学可以空降文末 看这篇文章前源数据长这样: 学完后 ...