基于Airtest实现python自动抢红包,用python编写微信领红包,一、Airtest的
基于Airtest实现python自动抢红包,用python编写微信领红包,一、Airtest的
一、Airtest的介绍
1)Airtest的简介
Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。Airtest的框架是网易团队自己开发的一个图像识别框架,这个框架的祖宗就是一种新颖的图形脚本语言Sikuli。Sikuli这个框架的原理是这样的,计算机用户不需要一行行的去写代码,而是用屏幕截屏的方式,用截出来的图形摆列组合成神器的程序,这是Airtest的一部分。 Airtest也基于poco这个U控件搜索框架,这个框架也是网易自家的跨平台U测试框架,原理类似于appium,通过控件的名称,id之类的来定位目标控件,然后调用函数方法,例如click(),swip()之类的方法来对目标控件进行点击或者是操作。
2)关于自动化测试,Airtest更多的用作自动化测试
概念:自动化测试,就是把繁杂的人工测试用例利用自动化测试工具编写成代码,让机器代替人工自动跑用例的过程。实际上就是把以人为驱动的测试行为转化为机器执行的一种过程。意义:节省人力、物力、时间、硬件资源等,提升测试效率,特别对于繁琐重复的测试用例,可以使测试人员更专注于新的测试模块的建立和开发,从而提高测试覆盖率。
3)配置手机连接
[Airtest简介] 网易出品的一个自动化测试工具 * 可以基于图像识别来完成自动化测试 * 可以基于poco控件来完成自动化测试[安装] 官网下载:https://airtest.netease.com/changelog.html 解压即用[配置手机] 1. 打开 AirtestIDE 2. 将手机打开开发者模式 3. USB链接手机 4. 在右上角点击connect 5. 出现界面即可
二、python语言操作手机
1)左下标选择安卓,生成初始化代码
# -*- encoding=utf8 -*-__author__ = "hp"from airtest.core.api import *auto_setup(__file__)from poco.drivers.android.uiautomation import AndroidUiautomationPocopoco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)View Code
2)打开微信
2.1)第一种方式,通过 应用名字打开
# 打开微信poco(text=‘微信‘).click() # click 点击事件
2.2)打开应用app的名称
第一步获取应用app的名称
# 查看当前手机上的app的包,有哪些,找到需要打开的包dev = device()print(dev.list_app(third_only=True)) # 获取所以的应用的包名# com.tencent.mm 为微信的包名
第二步,打开微信。如果知道了包名,第一步可省略,直接使用
# 打开appstart_app(‘com.tencent.mm‘)
3)根据标签选择需要的信息
# 晒选对话框items_elements = poco(name=‘com.tencent.mm:id/b9g‘).offspring(name=‘com.tencent.mm:id/b9i‘) # offspring 为子孙节点# 选择出所有的名字for item in items_elements: name = item.get_text() print(name)
4)抢红包代码
# -*- encoding=utf8 -*-__author__ = "hp"from airtest.core.api import *auto_setup(__file__)from poco.drivers.android.uiautomation import AndroidUiautomationPocopoco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)# 打开appstart_app(‘com.tencent.mm‘)# 晒选对话框items_elements = poco(name=‘com.tencent.mm:id/b9g‘).offspring(name=‘com.tencent.mm:id/b9i‘) # offspring 为子孙节点# 选择出所有的名字names = []for item in items_elements: name = item.get_text() names.append(name)print(names) def get_red_pakets(): # 实现抢红包,选择历史消息,进行反转poco("com.tencent.mm:id/ae").child("android.widget.RelativeLayout")[5] msg_elements_list = poco(name="android.widget.RelativeLayout").children() # 获取别人发的消息 # 反转消息 msg_lists = [] for item in msg_elements_list: msg_lists.insert(0,item) for msg in msg_lists: # 第一次循环出来的就是最后一个元素,也是最新的元素 # 判断红包是否存在 red_key_element = msg.offsping(name=‘com.tencent.mm:id/asn‘) # 已领取元素定位 not_red_key = msg.offsping(name=‘com.tencent.mm:id/aso‘) if red_key_element: # 说明有红包,别管有没有抢过 # 判断抢没有抢过 if not_red_key.exists() and not_red_key.get_text() == ‘以领取‘: print(‘已经抢过了‘) continue else: print(‘有新红包了‘) msg.click() # 点红包 # 开红包 kai_elements = poco(name=‘com.tencent.mm:id/czt‘) if kai_elements.exists(): kai_elements.click() # 返回对话框 keyevent(‘BACK‘) else: print(‘没有红包!‘) continue # 进入对话框target = ‘myfriend‘if target in names: index = names.index(target) # 计算出列表的索引 items_elements[index].click() # 进入该对话框 while True: get_red_pakets() sleep(1) # 每一秒检查一次View Code
5)归纳总结
[Airtest简介] 网易出品的一个自动化测试工具 * 可以基于图像识别来完成自动化测试 * 可以基于poco控件来完成自动化测试[安装] 官网下载:https://airtest.netease.com/changelog.html 解压即用[配置手机] 1. 打开 AirtestIDE 2. 将手机打开开发者模式 3. USB链接手机 4. 在右上角点击connect 5. 出现界面即可 6.自动生成代码 在poco辅助款左下角选择 安卓[打开微信] 先找到包名 device() dev.list_app() 指定包名打开 start_app(包名) [选择对话框] poco来定位元素的位置 offspring是选择子孙节点,包括儿子,孙子,重孙子 补充 --> children 是选择子节点,只包括儿子 get_text() 选择节点上对应的文本[选择对话列表] FILO --> First In First Out LIFO --> Last In First Out Proprietary [总结] 注意空间元素的选取 children 和 offspring的使用 Airtest可以实现手机app的爬虫 可以直接使用 Airtest运行多个手机 --> 群控 结合 MitmProxy来实现爬虫,MitmProxy抓包工具,可以过滤请求与响应
基于Airtest实现python自动抢红包
相关内容
- Python国内镜像源,docker国内镜像源,国内源:清华:ht
- Intel realSense ubuntu 16.04+python 环境配置指南,ubuntu怎么安
- python获取url响应,,前言requests
- Python批量删除mysql中千万级大量数据,mysql快速删除大量
- Python3涓?if not 鐢ㄦ硶,硶是什么意思,鏍囩锛?a hre
- 基于redis(订阅发布)实现python和java进程间通信,,主要结
- python调用ice接口,python怎么写接口给别人调用,今天用
- python-????????????,python有什么用,?????????1
- 吴裕雄 python深度学习与实践(17),,import ten
- python如何计算程序(代码块)的运行时间?,,1.引入
评论关闭