ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2021-06-28 12:03:42  阅读:173  来源: 互联网

标签:tap 蚂蚁 Python driver 收取 能量 定时


1. 概述

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

2. 环境

本文主要环境如下:

  • Win7
  • 小米5s
  • Python3.7
  • Appium1.5
  • 支付宝10.2.6.7010

 

3. 实现

功能实现的基本思路为:

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

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

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

参数配置代码实现如下:

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

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

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

代码实现如下:

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

< END >

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

 

标签:tap,蚂蚁,Python,driver,收取,能量,定时
来源: https://blog.51cto.com/u_15283574/2950660

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有