支付宝自动收能量

upload successful

运行环境

  • macOS Big Sur 11.2
  • 小米10的手机

准备工作

安装uiautomator2

安装方法:

1
pip install --upgrade --pre uiautomator2

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

开启开发者模式和USB调试

手机接入电脑前首先需要开启开发者模式,并开启USB调试,USB安装 (以小米10为例:如下图),这样才能保证uiautomator2有足够的权限操作你的手机。

upload successful

upload successful

upload successful

upload successful

upload successful

upload successful

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

安装adb

Mac可以直接使用brew命令安装adb,需要先安装Homebrew:

1
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

安装adb:

1
brew install android-platform-tools

upload successful

安装成功执行:

1
adb devices

如下图所示即adb安装成功,并且手机和电脑连接成功。

upload successful

注:如果adb没有安装会报错 RuntimeError: No adb exe could be found. Install adb on your system。

具体实现

代码实现(具体含义见注释):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import uiautomator2 as u2
import time
import random

# 连接手机
d = u2.connect() # 第一次使用有线连接,手机需要插电脑上,并开启开发者模式和USB调试
# d = u2.connect("xxx.xxx.xxx.xxx") # 除了第一次以外,可以通过无线连接,电脑和手机需要在同一个局域网内

# 打开支付宝
d.app_start("com.eg.android.AlipayGphone") # Uiautomator2可以直接通过应用包名调起应用
time.sleep(2) # 休眠2s等待支付宝完全启动

# 打开蚂蚁森林
d(text="蚂蚁森林").click() # Uiautomators2可以直接点击屏幕某个文字的位置,所以需要把蚂蚁森林放的支付宝首页,这样打开支付宝后就可以直接定位到蚂蚁森林的位置了
time.sleep(5) # 休眠5s等待支付宝加载完

# 寻找能量
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")

注:第一次电脑连接手机需要注释掉第七行,取消注释第六行,手机会自动安装ATX,后面就可以通过ATX上面显示的ip无线连接手机。手机上的ATX如图所示:

upload successful

这个脚本有个问题就是,如果在收能量的时候弹出关注什么什么的弹窗,他就无法找到能量或者无法找到找能量按钮跳到下一个人那里继续偷,会报错或者死循环。再就是,最好可以每天定时自动运行脚本偷能量。

---------------------------- 本 文 结 束 感 谢 阅 读 ----------------------------
欢迎打赏~
0%