zoukankan      html  css  js  c++  java
  • 用 Python 实现定时自动化收取蚂蚁森林能量

    1. 概述

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

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

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

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

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

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

  • 相关阅读:
    linux查看CPU和内存信息
    linux yum命令详解
    查看文件中关键字前后几行的内容
    vue.js+web storm安装及第一个vue.js
    android GPS: code should explicitly check to see if permission is available
    ASP.NET MVC Identity 使用自己的SQL Server数据库
    阿里云服务器,tomcat启动,一直卡在At least one JAR was scanned for TLDs yet contained no TLDs就不动了
    ASP.NET MVC4 MVC 当前上下文中不存在名称“Scripts”
    python 将windows字体中的汉字生成图片的方法
    Java android DES+Base64加密解密
  • 原文地址:https://www.cnblogs.com/ityard/p/13986520.html
Copyright © 2011-2022 走看看