python模拟支付宝蚂蚁森林的能量产生过程_Python+appium自动化实例(一):使用Python3+appium实现自动收取支付宝蚂蚁森林能量...
一、环境搭建
1、下载安装appium。在官网http://appium.io/ 下载appium安装包,并进行安装。
2、安装Android SDK。可直接在(https://android-sdk.en.softonic.com)中下载。也可先安装 Android Studio ,然后在Android Studio 中进行安装。
3、配置环境变量:新增变量名:ANDROID_HOME,对应值为Android SDK路径。如:D:AndroidSdk。然后找到Path,并在里面添加:%ANDROID_HOME%platform-tools。
二、简单介绍
1、启动appium。
(1)直接点击start server。
(2)启动会话,点击第一个按钮。当前页面可以查看实时日志, 查看所有日志可点击第二个按钮。停止此次服务会话,点击第三个按钮停止服务。
会话启动后如下图页面:
3、连接手机前,需要在手机设置开发者模式中设置,允许USB调试。
4、在appium会话启动的页面配置desired capbilities相关参数。
desired capbilities为Appium Client向Appium Server发送的,其内容为一个json格式的键值对。
platformName : 平台名字,如:ios、android
platformVersion : 对应的平台版本
deviceName : 设备名,手机型号
appPackage : 应用的包名
appActivity : 应用的Activity
automationName : 自动
对于appPackage和appActivity参数如何查找呢?
(1) 先找到获取apk信息工具(android SDK的aapt工具)所在的位置;( AndroidSdkuild-tools29.0.3aapt.exe)
(2) 下载支付宝app,记住存放位置;
(3) 打开命令行,输入以下信息:aapt.exe dump badging D:alipay_wap_main.apk(支付宝apk路径)
在输出信息中可以找到‘appPackage’和‘appActivity’的值:
三、开发步骤
1、appium参数配置。
如下图是我的配置:
{"platformName": "Android","deviceName": "ALP-AL00","appPackage": "com.eg.android.AlipayGphone","appActivity": "com.eg.android.AlipayGphone.AlipayLogin","noReset": "true","fullReset": "false","automationName": "UiAutomator1"}
加这两个参数的目的是为了避免重新登录,不需要验证各种信息。
配置完成后,点击start session即可运行手机支付宝应用。
2、进入支付宝应用后,使用鼠标点击左边支付宝界面,在右边会展示点击项的信息,需要进入到指定项中时,点击右边上方的Tap进入。
依次点击:
顺序为:进入支付宝 ---> 更多 ---> 蚂蚁森林 ---> 查看多好友 ---> 依次点击进入好友蚂蚁森林主页。在每次点击时都记录应用想的source-id。在代码编辑的时候需要使用。
也可以在页面顶部有个小眼睛,点击小眼睛可以对操作进行代码录制,在录制时,右上角可以选择代码类型,如Java,Python等。
3、Python实现步骤
(1)安装appium包:pip install appium。Python的appium模块需要先打开appium客户端,否则无法使用。
(2)检测有无能量球。如下图,如果页面上有能量球时,页面上classname(android.widget.Button)的数量大于5,并且在能量球的text中包含“能量”字样。不可收取的能量球是不包含“能量”这两个字的。所以根据classname的数量和text中是否包含“能量”二字就可以判断是否有可收取的能量球。
为什么要classname的数量要大于5呢?因为页面上基本的按钮有五个,比如:成就、浇水、弹幕等。
代码如下:
items = driver.find_elements_by_class_name("android.widget.Button")if len(items)>5:for i initems:if "能量" ini.text:print("收取{0}的{1}".format(name,i.text.replace("收集","")))
i.click()#driver.find_elements_by_class_name("android.widget.Image")[1].click()
time.sleep(0.5)
(3)在收取第一个好友的能量后,需要接着进入第二个好友的主页,此时采取的方式是将页面向上滑动约一个好友框的高度。
start_x = 500
start_y = 1910distance = 195 # 约一个框的高度driver.swipe(start_x, start_y, start_x, start_y - distance) #向上滑动一个框的高度 #driver.swipe(分别表示滑动的起始和终点位置的 x/y 坐标)
(4)避免漏掉部分能量未到时间的好友,可返回到顶端重新检测。
name = driver.find_element_by_id("com.alipay.mobile.nebula:id/h5_tv_title").textif name=="某某某的蚂蚁森林": #填写最后一个好友昵称
driver.tap([(50, 130), (70, 150)], 100) #返回周排行榜主页( < 蚂蚁森林 ) driver.tap(x坐标,y坐标,t(ms))
time.sleep(1)
driver.tap([(50, 130), (70, 150)], 100) #返回蚂蚁森林主页
Swipe(driver) # 查看更多好友continue
(4)全部代码如下:参照微信公众号“裸睡的猪”
from appium importwebdriverimporttimefrom appium.webdriver.common.touch_action importTouchAction
desired_caps={"platformName": "Android","deviceName": "MHA_AL00","appPackage": "com.eg.android.AlipayGphone","appActivity": "AlipayLogin","noReset": "true","fullReset": "false","automationName": "UiAutomator1"}
server= "http://localhost:4723/wd/hub"driver=webdriver.Remote(server, desired_caps)
time.sleep(2)
driver.find_element_by_id("com.alipay.android.phone.openplatform:id/more_app_icon").click() #点击更多
time.sleep(2)
driver.find_element_by_id("com.alipay.android.phone.wallet.homemarket:id/app_group_item_icon").click() #点击蚂蚁森林
time.sleep(2)defSwipe(driver):
n=0while n<=5:
start_x= 500start_y= 1500distance= 1000driver.swipe(start_x, start_y, start_x, start_y-distance)
n=n+1driver.find_element_by_xpath("//*[@text="查看更多好友"]").click() #点击查看更多好友
time.sleep(1)defrun(driver):
Swipe(driver)whileTrue:
TouchAction(driver).press(x=150, y=700).release().perform() #第一个蚂蚁好友框框的坐标
time.sleep(0.5)
name = driver.find_element_by_id("com.alipay.mobile.nebula:id/h5_tv_title").textif name=="": #填写最后一个好友昵称
driver.tap([(50, 130), (70, 150)], 100) #返回周排行榜主页( < 蚂蚁森林 ) driver.tap(x坐标,y坐标,t(ms))
time.sleep(1)
driver.tap([(50, 130), (70, 150)], 100) #返回蚂蚁森林主页
Swipe(driver)continue
print("正在查看{0}".format(name))
items= driver.find_elements_by_class_name("android.widget.Button")if len(items)>5:for i initems:if "能量" ini.text:print("收取{0}的{1}".format(name,i.text.replace("收集","")))
i.click()
time.sleep(0.5)
driver.tap([(50, 130), (70, 150)], 100)
time.sleep(0.1)
start_x= 500
start_y = 1910distance= 195 # 一个框的高度driver.swipe(start_x, start_y, start_x, start_y- distance) #向上滑动一个框的高度 #driver.swipe(分别表示滑动的起始和终点位置的 x/y 坐标)
time.sleep(0.2)if __name__ == "__main__":
run(driver)
注:在收取能量的时候,每次都是进入第一个好友的蚂蚁主页,代码始终走不到向上滑动的部分,然而在debug时就可以走到,之后sleep了2s后就可以正常进入。所以在调试过程中,如果遇到无法继续到下一步,可适当的加上sleep。
python模拟支付宝蚂蚁森林的能量产生过程_Python+appium自动化实例(一):使用Python3+appium实现自动收取支付宝蚂蚁森林能量...相关推荐
- python支付宝蚂蚁森林_Python+appium自动化实例(一):使用Python3+appium实现自动收取支付宝蚂蚁森林能量...
注:仅用作自动化实践研究,请勿滥用 一.环境搭建 1.下载安装appium.在官网http://appium.io/ 下载appium安装包,并进行安装. 2.安装Android SDK.可直接在(h ...
- python模拟淘宝登录后上下架商品_Python 淘宝系列(三): 模拟登陆成功后获取购物车信息...
依然采用IE的F12开发者工具分析抓取到的数据. 关键问题 获取token后,重定向地址的获取 一般网站登录成功后,跳转方式主要有两种:(1)服务器返回的响应头中包含 location header, ...
- AutoJs学习-支付宝自动收取自己和好友能量
往期文章分享 点击跳转=><导航贴>- Unity手册,系统实战学习 点击跳转=><导航贴>- Android手册,重温移动开发
- python两层for循环嵌套的执行过程_Python for循环嵌套
Python for循环嵌套教程 Python for循环嵌套详解 语法 for i in cond1 { # do something for j in cond2 { for k in cond3 ...
- python的scale方法的变体以及使用_Python with用法实例
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- python模拟支付宝蚂蚁森林的能量产生过程_支付宝蚂蚁森林怎么产生能量
展开全部 用户通过步行.地铁出行.在线缴纳水电煤气费.网上缴交通罚单.网络挂62616964757a686964616fe58685e5aeb931333431353932号.网络购票等行为可以产生能 ...
- 【Appium】Python+Appium实现支付宝蚂蚁森林自动收取能量的一种解决方案
代码有更新,适配新版支付宝,参见最新文章: [Appium][更新]Python+Appium实现支付宝蚂蚁森林自动收取能量 一.环境准备 首先,你需要一个能够运行代码的环境,这里包括: Node.j ...
- python模拟蚂蚁森林能量产生过程代码_用Python实现定时自动化收取蚂蚁森林能量,再也不用担心忘记收取了...
1. 概述 提到蚂蚁森林,大家应该都知道,你是否有因忘记收取能量而被好友收取的经历呢? 如果你不是蚂蚁森林重度用户,被别人收取了能量可能对你来说没什么. 但如果你是蚂蚁森林重度用户,遇到能量被偷 .. ...
- 【Appium】【更新】Python+Appium实现支付宝蚂蚁森林自动收取能量
一.前期准备 环境准备和以前的脚本可以参见之前的文章[Appium]Python+Appium实现支付宝蚂蚁森林自动收取能量的一种解决方案 二.更新内容 新版的支付宝APP更新了遍历蚂蚁森林好友列表的 ...
最新文章
- 比特币现金(BCH)将在2018年占据主导地位
- Linux环境下启动Tomcat太慢
- 全国计算机等级考试题库二级C操作题100套(第06套)
- linux网络编程之广播详细代码及文档说明 -,Linux网络编程之广播
- IntelliJ IDEA这样配置,代码效率嗖嗖的
- Java实现websocket
- HLS视频点播直播初探
- 编译安装mysql5.7.24踩的坑
- python职业发展规划书范文_职业生涯规划书范文 3篇
- 【路径规划】基于matlab GUI粒子群算法机器人避障路径规划【含Matlab源码 923期】
- qq空间尾巴怎么修改成别的机型
- 中文版232测试软件,打印机、客显测试软件
- 2022-2027年中国图书馆RFID行业市场深度分析及投资战略规划报告
- python图片,大家来找茬
- HCIA-IoT 个人学习总结 Day2
- Spark on Hive Hive on Spark,傻傻分不清楚
- win7音量图标不见了 点显示它图标和通知 提示但前未处于活动
- matlab标题斜体_Matlab绘图中下标、斜体及希腊字母的使用方法
- 智能音箱里小度、小爱、天猫精灵哪个更加好?(上)
- 给求职者的启示:发送求职邮件时的忌讳