小言_互联网的博客

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

418人阅读  评论(0)

1. 概述

提到蚂蚁森林,大家应该都知道,你是否有因忘记收取能量而被好友收取的经历呢?

如果你不是蚂蚁森林重度用户,被别人收取了能量可能对你来说没什么。

但如果你是蚂蚁森林重度用户,遇到能量被偷 ...

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

2. 环境

本文主要环境如下:

  • Win7

  • 小米5s

  • Python3.7

  • Appium1.5

  • 支付宝10.2.6.7010

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

3. 实现

功能实现的基本思路为:

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

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

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

参数配置代码实现如下:


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

通常大家都会将蚂蚁森林放在支付宝首页,此时我们打开支付宝后直接点击蚂蚁森林选项即可进入。

代码实现如下:

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

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


   
  1. # 收取能量
  2. def collect_energy(driver):
  3.      print( '开始收取能量')
  4.     # 获取手机屏幕宽高
  5.     width =  int(driver.get_window_size()[ 'width'])
  6.     height =  int(driver.get_window_size()[ 'height'])
  7.     # 能量球可能出现的区域坐标
  8.     start_x =  110
  9.     end_x =  940
  10.     start_y =  460
  11.     end_y =  880
  12.      for i in  range(start_y, end_y,  80):
  13.          for j in  range(start_x, end_x,  80):
  14.             tap_x1 =  int(( int(j) / width) * width)
  15.             tap_y1 =  int(( int(i) / height) * height)
  16.             # 点击指定坐标
  17.             driver.tap([(tap_x1, tap_y1), (tap_x1, tap_y1)],  1000)
  18.      print( '能量收取完毕')

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


   
  1. # 找能量
  2. def search_energy(driver):
  3.      print( '找能量,收取好友能量')
  4.     time.sleep( 3)
  5.     # 点击找能量
  6.     driver.tap([( 10001520), ( 10801580)],  1000)
  7.     time.sleep( 3)
  8.     # 收取好友能量
  9.     collect_energy(driver)
  10.     time.sleep( 3)
  11.     # 收取完毕继续找能量
  12.     search_energy(driver)

能量收取的功能实现了之后,我们使用定时任务实现定时收取即可,下面看一下定时任务的实现。

定时任务的实现我们使用 apscheduler 组件,使用之前需执行 pip install apscheduler 装一下。

定时任务的代码实现如下:


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

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

源码在公号 Python小二 后台回复 201116 获取。

< END >

原创不易,求分享、在看、赞


转载:https://blog.csdn.net/ityard/article/details/109733747
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场