基于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自动抢红包

评论关闭