用 Appium 自动收取蚂蚁森林能量

来源:Python 技术「ID: pythonall」

支付宝集 5 福让小编打开了尘封已久的蚂蚁森林小程序,它刚出来那会儿小编也算是一个重度用户,看着一直被偷的能量总想以德服人。今天就用 Python + Appium 写一个自动收取能量的脚本,完成之后再也没人能从小编手上将能量偷走了。

启动入口

还不会使用 Appium 的小伙伴可以先看看本公众号上的《解放双手,提高生产力,这款神器你值得拥有》学习和使用 Appium。

下面代码是支付宝的配置文件:

from appium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.support import expected_conditions as EC

desired_capabilities = {
    'platformName': 'Android',  # 操作系统
    'deviceName': '2a254a02',  # 设备 ID
    'platformVersion': '10.0.10',  # 设备版本号,在手机设置中查看
    'appPackage': 'com.eg.android.AlipayGphone',  # app 包名
    'appActivity': 'AlipayLogin',  # app 启动时主 Activity
    'noReset': True  # 是否保留 session 信息 避免重新登录
}

driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_capabilities)
# 设置等待超时时间
wait = WebDriverWait(driver, 60)

点击进入蚂蚁森林

支付宝上的蚂蚁森林的图标按钮位置每个人按照各自的习惯都不相同,小编的图标位置在全部-->最近使用里面,可以用蚂蚁森林文字找到图标并点击。

# 点击全部图标
wait.until(EC.element_to_be_clickable((By.ID, 'com.alipay.android.phone.openplatform:id/more_app_icon'))).click()
# 找到蚂蚁森林
wait.until(EC.element_to_be_clickable((By.XPATH, '//android.widget.TextView[contains(@text, "蚂蚁森林")]'))).click()
time.sleep(1)

收集能量

在蚂蚁森林中并不能通过用 id 的方式定位到能量球,只能用在能量球可能出现的区域用坐标点击,start_x,end_x,start_y,end_y 是这个区域左上角和右下角的坐标位置。

# 获取手机屏幕宽高
width = int(driver.get_window_size()['width'])
height = int(driver.get_window_size()['height'])

# 收取能量
def collect_energy(driver, width, height):
    # 能量球可能出现的区域坐标
    start_x = 150
    end_x = 900
    start_y = 540
    end_y = 900

for x in range(start_x, end_x, 50):
        for y in range(start_y, end_y, 50):
            x_scale = int((int(x) / width) * width)
            y_scale = int((int(y) / height) * height)
            # 点击指定坐标
            TouchAction(driver).press(x=x_scale, y=y_scale).release().perform()
    print('能量收取完毕')

收取好友能量

自己的能量收取完之后,点击 找能量 进入好友的蚂蚁森林收取好友的能量,直到出现返回我的森林页面。

def search_energy(driver, width, height):
    x = int((int(1000) / width) * width)
    y = int((int(1550) / height) * height)
    # 点击指定坐标
    TouchAction(driver).press(x=x, y=y).release().perform()
    time.sleep(1)
    is_collected = is_element_exist_by_xpath(driver, '//android.widget.Button[contains(@text, "返回我的森林")]')
    if is_collected:
        print('能量全部收集完毕')
        return

collect_energy(driver, width, height)
    search_energy(driver, width, height)

总结

用 Appium 很简单的就将蚂蚁森林的能量球自动化了,看完这篇文章后希望小伙伴可以活学活用将其他 APP 应用中的重复的操作也自动化,省事又省力。

(0)

相关推荐

  • 【自动化测试】自动化测试框架与工具

    文章目录 1)什么是自动化测试框架? 1.1 什么是框架? 1.2 什么是自动化测试框架? 1.2.1 优点: 1.2.2 框架的基本组件 1.需要配置文件管理: 2.业务逻辑代码和测试脚本分离 3. ...

  • Python教你迅速成为蚂蚁森林排行榜第一名

    最近在家远程工作,结果作息更混乱了 ,早上起不来,导致我蚂蚁森林能量天天被偷,严重影响我沙漠造树"大业" .于是我决定用python写个自动偷能量的程序,每天早上定时偷取好友能量, ...

  • appium+python自动化30-list定位(find_elements)

    前言 有时候页面上没有id属性,并且其它的属性不唯一,平常用的比较多的是单数(element)的定位方法,遇到元素属性不唯一,就无法直接定位到了. 于是我们可以通过复数(elements)定位,先定位 ...

  • appium

    文章目录 appium 1.appium可以测试的对象 2.自动化混合APP的条件 3.总结 4.查看webview版本 5.APP面试点 6.代码部分 方式1: 设置搜索webview 方式2: 输 ...

  • appium+python自动化31-android_uiautomator定位

    前言 appium的前身就是封装android的uiautomator这个框架来的,所以uiautomator的一些定位方法也可以用 一. text 1.通过text文本定位语法 > new U ...

  • appium+python自动化24-滑动方法封装(swipe)

    一.swipe介绍 1.查看源码语法,起点和终点四个坐标参数,duration是滑动屏幕持续的时间,时间越短速度越快.默认为None可不填,一般设置500-1000毫秒比较合适. ``` swipe( ...

  • appium+python自动化33-解锁九宫格(TouchAction)

    一.TouchAction 1.源码可以在这个路径找到:Lib\site-packages\appium\webdriver\common\touch_action.py ``` class Touc ...

  • 用 Python 实现定时自动化收取蚂蚁森林能量

    用 Python 实现定时自动化收取蚂蚁森林能量

  • 蚂蚁森林偷能量?分手吧!

    官注我的都是我老公!

  • Appium+python自动化29-toast消息

    前言 appium1.5以后的版本才支持toast定位,并且 'automationName'得设置为'Uiautomator2',才能捕获到. 一. Supported Platforms 1.查看 ...

  • 程序员眼中的测试

    码农的产品和服务大都是以软件形式存在的,我们存在的价值之一就是快速提供高质量的软件产品或服务.如何保障软件的高质量呢?这与软件测试分不开的,测试是保证软件质量的关键环节之一. 老码农早年曾经做过两年的 ...