当前位置: 首页 > news >正文

collect的功能是什么?其底层如何实现的?_用Python实现定时自动化收取蚂蚁森林能量,再也不怕被偷了...

1. 概述

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

61b391949900390ed0255359c149ba0d.png

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

02c6ddcc628101657436456595c0d16e.png

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

067ed47c1b11e126fd2a644d417f2d53.png

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

2. 环境

本文主要环境如下:

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

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

3. 实现

功能实现的基本思路为:

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

23a372d846fbc156ce065730a7d2b198.png

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

参数配置代码实现如下:

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

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

8d5373742e02bd8b858be9a8f0540118.png

代码实现如下:

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 

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

相关文章:

  • docker python_「docker实战篇」python的docker-docker镜像的创建使用命令(32)
  • 在android studio中如何创建一个类来继承另外一个类_Python编程从入门到实践-连载8(类)...
  • python气象绘图速成_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)
  • ubuntu 自动挂载共享文件夹 /etc/fstab_使用 Cobbler 批量自动化部署 Windows 10 和 Windows Server 2019...
  • idea redis 插件_最全 !10个Redis可视化工具横向评测
  • sqlserver可视化工具_每个数据科学家都应该知道的18个基础工具
  • python coding_Python的编码注释# -*- coding:utf-8 -*-
  • python生成指定长度的列表_如何用Python创建固定长度的列表
  • 内存管理新技术_技术转管理,新项目经理都来看看
  • python中的json函数_Python Json模块中dumps、loads、dump、load函数介绍
  • char截取字符串_Java字符串:StringBuilder 和 StringBuffer
  • activex传字符串数组_温习笔记 字符串类型
  • python爬新闻并保存csv_Python爬虫如何实现自动翻页并将数据存入csv中?
  • python3官网下载教程_Python3 快速入门教程
  • python现在排第几_2019编程语言排行榜:铁打的Python连续3年第一,它居然跌出前十?...
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • CAP理论的例子讲解
  • Node 版本管理
  • Otto开发初探——微服务依赖管理新利器
  • VuePress 静态网站生成
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 力扣(LeetCode)357
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 软件开发学习的5大技巧,你知道吗?
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 我这样减少了26.5M Java内存!
  • 【干货分享】dos命令大全
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #13 yum、编译安装与sed命令的使用
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)计算机毕业设计大学生兼职系统
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (三)elasticsearch 源码之启动流程分析
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)关于多人操作数据的处理策略
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NET建议使用的大小写命名原则
  • .NET轻量级ORM组件Dapper葵花宝典
  • @DependsOn:解析 Spring 中的依赖关系之艺术
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • [ACTF2020 新生赛]Upload 1
  • [BUG]Datax写入数据到psql报不能序列化特殊字符
  • [BZOJ 1040] 骑士
  • [BZOJ1053][HAOI2007]反素数ant
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [CF494C]Helping People
  • [C语言]——函数递归
  • [java基础揉碎]关系运算符(比较运算符)逻辑运算符赋值运算符三元运算符运算符的优先级
  • [jobdu]不用加减乘除做加法