OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3019|回复: 0

用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了

[复制链接]

143

主题

145

帖子

0

精华

高级会员

Rank: 4

积分
585
金钱
585
注册时间
2020-5-25
在线时间
42 小时
发表于 2020-11-23 17:01:59 | 显示全部楼层 |阅读模式
2. 环境

本文主要环境如下:

  • Win7

  • 小米5s

  • Python3.7

  • Appium1.5

  • 支付宝10.2.6.7010


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

3. 实现

功能实现的基本思路为:

  • 打开支付宝进入蚂蚁森林,收取自己的能量

  • 收取完自己能量后,点击找能量进入好友蚂蚁森林,收取好友能量,以此类推


接下来我们看一下主要代码实现。

参数配置代码实现如下:



  • 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 实现定时自动化收取蚂蚁森林能量的工作就完成了。

学习视频资料:http://www.makeru.com.cn/live/1392_1164.html?s=143793


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-6-9 15:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表