简单的python抢红包脚本-基于Airtest实现python自动抢红包

一、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. 打开 AirtestIDE2. 将手机打开开发者模式3. USB链接手机4. 在右上角点击connect5. 出现界面即可

1209248-20190811180202729-1848943967.png

二、python语言操作手机

1)左下标选择安卓,生成初始化代码

1209248-20190811180402871-850906094.png

ContractedBlock.gif

ExpandedBlockStart.gif

# -*- encoding=utf8 -*-__author__= "hp"

from airtest.core.api import *auto_setup(__file__)frompoco.drivers.android.uiautomation import AndroidUiautomationPoco

poco= 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 为微信的包名

第二步,打开微信。如果知道了包名,第一步可省略,直接使用

# 打开app

start_app('com.tencent.mm')

3)根据标签选择需要的信息

1209248-20190811185557708-269731089.png

# 晒选对话框

items_elements= poco(name='com.tencent.mm:id/b9g').offspring(name='com.tencent.mm:id/b9i') # offspring 为子孙节点

# 选择出所有的名字for item initems_elements:

name=item.get_text()

print(name)

4)抢红包代码

ContractedBlock.gif

ExpandedBlockStart.gif

# -*- encoding=utf8 -*-__author__= "hp"

from airtest.core.api import *auto_setup(__file__)frompoco.drivers.android.uiautomation import AndroidUiautomationPoco

poco= AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False)

# 打开app

start_app('com.tencent.mm')

# 晒选对话框

items_elements= poco(name='com.tencent.mm:id/b9g').offspring(name='com.tencent.mm:id/b9i') # offspring 为子孙节点

# 选择出所有的名字

names=[]for item initems_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 inmsg_elements_list:

msg_lists.insert(0,item)for msg inmsg_lists: # 第一次循环出来的就是最后一个元素,也是最新的元素

# 判断红包是否存在

red_key_element= msg.offsping(name='com.tencent.mm:id/asn')

# 已领取元素定位

not_red_key= msg.offsping(name='com.tencent.mm:id/aso')ifred_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')ifkai_elements.exists():

kai_elements.click()

# 返回对话框

keyevent('BACK')else:

print('没有红包!')continue# 进入对话框

target= 'myfriend'

if target innames:

index=names.index(target) # 计算出列表的索引

items_elements[index].click() # 进入该对话框whileTrue:

get_red_pakets()

sleep(1) # 每一秒检查一次

View Code

5)归纳总结

[Airtest简介]

网易出品的一个自动化测试工具*可以基于图像识别来完成自动化测试*可以基于poco控件来完成自动化测试

[安装]

官网下载:https://airtest.netease.com/changelog.html

解压即用

[配置手机]1. 打开 AirtestIDE2. 将手机打开开发者模式3. USB链接手机4. 在右上角点击connect5. 出现界面即可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抓包工具,可以过滤请求与响应

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值