如何使用Airtest进行UI自动化测试
创始人
2025-05-29 03:15:02
0

一、环境搭建

1、Airtest客户端下载

访问官网http://airtest.netease.com/,根据自己的系统下载相应的客户端安装;

2、python工具下载与环境搭建

在本地python环境中安装airtest和pocoui,然后用命令行运行脚本;

1、建议使用3.7以下 版本,下载python3;

2、下载python后,配置本地的运行环境,详见:http://airtest.netease.com/docs/cn/4_run_script/run_script.html#id4

1)使用 pip 安装Airtest框架 pip install airtest

2)若运行代码时,在cv2模块报 ImportError: DLL load failed: 找不到指定模块 的错,如果使用的python版本低于3.7,请直接运行:

pip uninstall opencv-contrib-python
# 若以下安装语句运行失败,可以尝试更新pip到最新版本后重试
pip install opencv-contrib-python==3.2.0.7

3)Poco安装

使用 pip 安装poco框架 pip install pocoui,请注意库的名称为 pocoui,不要填错。

3、在Airtest中集成python环境

在Airtest中集成python环境的话,需要安装python之后,再填写python的路径到AirtestIDE中;可以参考:http://airtest.netease.com/docs/cn/4_run_script/run_script.html#airtestidepython 进行集成;

二、Airtest使用

1、使用方法

具体请参考官方文档:http://airtest.netease.com/docs/cn/,请优先看快速5分钟使用教程:http://airtest.netease.com/tutorial/Tutorial.html

2、在Airtest IDE中连接手机

在Air test中连接手机请查看连接:http://airtest.netease.com/docs/cn/2_device_connection/1_android_phone_connection.html#androidusb

手机连上Airtest之后,会向手机中咱装3个app,如下:

 

pocoservice是支撑poco操作的app,yosemite是airtest的输入法,安装之后,手机的默认输入法会变成这个输入法,如果需要改回来原来的输入法,需要手动到手机设置里面进行修改;

3、在代码中连接手机

如果是在 .py 脚本文件中 import airtest/poco ,希望以普通python脚本的方式来运行的话,可以在脚本代码中使用 connect_device 接口:

1 from airtest.core.api import *
2 connect_device("Android:///")  # 传入的是设备字符串

4.多个手机交互

如果case中涉及到两个手机交互的,可以在.py文件中连接多个手机,需要在哪个手机上操作,就需要在脚本中使用set_cerrent()借口来切换到相应的手机上;

1 device1 = "c17a4cb4" #设备1
2 device2 = "RKK0217C15003363" #设备2
3 dev1 = connect_device("android://127.0.0.1:5037/"+device1)#连接设备1
4 dev2 = connect_device("android://127.0.0.1:5037/"+device2)#连接设备2
5 poco1 = AndroidUiautomationPoco(dev1) #初始化设备1
6 poco2 = AndroidUiautomationPoco(dev2) #初始化设备2
7 set_current(device1)#切换到手机1
8 set_current(device2)切换到手机2

5.case举例

初始化设备之后就可以进行相关设备的poco操作了,举个例子:

这个例子是打开微信,点击聊天信息中的一个好友,然后清除好友聊天的例子;

 1 from poco.drivers.android.uiautomation import AndroidUiautomationPoco2 device1 = "c17a4cb4" #设备号3 dev1 = connect_device("android://127.0.0.1:5037/"+device1)#连接师傅手机4 poco1 = AndroidUiautomationPoco(dev1) #实例化手机5 auto_setup(__file__)6  7  8 def clear_wechat(poco):#清除微信的聊天记录9     start_app("com.tencent.mm")#启动微信
10     sleep(12)#等待12秒
11     poco1(text="三星").click()#点击好友“三星”的聊天
12     poco1("android.support.v7.widget.LinearLayoutCompat").click()#点击更多
13     poco1(text="清空聊天记录").click()#点击清空聊天记录
14     poco1(text="清空").click()#点击清空
15     stop_app("com.tencent.mm")#关闭微信

6.引用其他air文件的方法:

如果有很多重复的操作,可以将这些重复的操作写到一个公用的air文件里面,然后再在用例里面引用这个公用的air文件的方法就可以:

举例,有一个名叫gongyou.air的文件,里面有一个clear_wechat的方法,这个clear_wechat方法就是一个清除微信聊天记录的用例,如果需要在用例中用到这个clear_wechat,就需要在用例中引用这个文件,然后倒入这个引用文件中的clear_wechat方法,如下:

 1 # -*- encoding=utf8 -*-2 __author__ = "xhong"3 4 from airtest.core.api import *5 from poco.drivers.android.uiautomation import AndroidUiautomationPoco6 from poco.exceptions import PocoNoSuchNodeException7 from poco.exceptions import PocoTargetTimeout8 ST.PROJECT_ROOT = "D:\code\AirtestCase"#引用公用air的路径9 using("gongyou.air")
10 from gongyou import clear_wechat

7.IDE的使用

IDE的设置和使用官网有具体的说明:http://airtest.netease.com/docs/cn/7_settings/1_ide_settings.html#editor

7.1、新建脚本

点击脚本窗口右侧的“+”号,会新建脚本,新建的脚本默认会生成下面的代码;如下:

7.2 Airtest辅助窗的使用

需要图像识别的使用的是Airtest辅助窗;

 

7.3 poco辅助窗的使用:

符合下列框架的APP的UI定位使用的是POCO辅助窗;

 

已安卓原生应用举例:

选择Android原生应用之后,会提示导入相关的库,选择yes就好;

 

 

7.4、执行脚本与查看报告

执行单个脚本,在airtest中执行就可以,如下:

7.5 执行多个脚本,需要在python中跑代码

多个脚本批量执行,在Airtest IDE中无法实现,需要单独写一个框架,并使用python写一个执行入口文件myrunner.py;

多个脚本串行执行脚本请参考:https://blog.csdn.net/u010127154/article/details/83375659

执行myrunner.py文件时,需要更改自己的AllCase路径和自己手机的设备号:

说明: 1.所有的需要执行的case写好之后都放在AllCase文件夹里面;

2.执行时只需要执行myrunner.py文件就可以了。

3.批量执行的报告会汇总到/Users/xhong/Documents/UI/AirtestCas/AllCase/summary.html文件里面,所有case执行完成之后,打开semmary.html文件可以看到汇总页面,点击每一个case名称可以查看具体的测试报告的内容;

 

7.6 需要注意的问题:

airtest 测试需要注意的问题:

1、在使用Airtest过程中,遇到的错误,请先到官网http://airtest.netease.com/docs/cn/9_faq.html,查找相应问题的解决方法,这个很重要,可以节省很多时间;
2.查看批量脚本的执行报告时,不要再IDE里面查看,直接打开文件就可以;
3.图像识别时,要截取高分辨率的手机来适配低分辨率的手机;
4.最好使用华为或是三星的手机,其他的手机启动pocoserver时可能会失败,导致脚本执行失败;

相关内容

热门资讯

企业IP打造指南:小公司低成本... 小公司做企业IP,不是为了装门面,而是让客户在没见到你之前,就能通过内容知道你是谁、你解决什么问题、...
官方:赵心童入选世界斯诺克名人... 北京时间5月8日消息,世界斯诺克巡回赛(WST)今日正式公布了2025/26赛季年终奖项及名人堂更新...
小灰熊AI学员王锋:希望能跟上... 35了,老程序员了。 从进入互联网行业到现在,其实已经做了很多年移动端开发。最早那几年,安卓行业发展...
原创 2... 2026年全国两会把稳定房地产市场列为重点工作,政府工作报告明确提出因城施策控增量、去库存、优供给。...
一年翻倍,六年未归——徽商银行... 文:向善财经 今年的港股市场,与A股市场出现了明显的分化。 A股这边,科技板块在AI浪潮中热闹非凡;...
古井贡酒2025:在行业深度调... 以“稳”为底、以“新”为翼。 文/每日财报 杜康 在行业库存高企、价格倒挂的背景下,当多数酒企在为...
好上好8408万收购鼎瑞芯加码... 5月7日晚,好上好(001298.SZ)抛出一份收购公告,拟以8408万元现金收购深圳市鼎瑞芯科技有...
全面大撤离!李嘉诚英国“套现”... 突发,李嘉诚又卖了。 这次,套现了455亿。 金额不少,但更值得关注的是透露着不同寻常的信号。 因为...
油气价格上涨加剧法国一季度贸易... 据新华社,法国海关7日发布的数据显示,受中东局势推高国际油气价格影响,法国今年第一季度贸易逆差扩大至...
昆仑芯启动科创板IPO上市辅导... 5月8日,据证监会官网显示,昆仑芯(北京)科技股份有限公司于2026年5月7日正式启动科创板上市辅导...
贵州茅台酒股份有限公司关于回购... 来源:上海证券报 证券代码:600519 证券简称:贵州茅台 公告编号:临2026-016 贵州茅...
百度昆仑芯启动科创板上市辅导,... 5月8日,证监会官网显示,昆仑芯(北京)科技股份有限公司 (下称“昆仑芯”)于2026年5月7日正式...
滕州信华的承压时刻:罚单、失信... 2026年4月末,滕州信华美元债单日跌近2%,关联方被列“老赖”。半年前,这家AA+城投曾因非市场化...
002808,或被终止上市! 【导读】因触及财务类退市指标,*ST恒久或被终止上市 中国基金报记者 李智 又一A股或被终止上市。 ...
院士团队掌舵,溧阳这家企业已完... 近日,溧阳天目先导电池材料科技有限公司(下称“天目先导”)官宣完成B轮融资,投资方包括知卓创新资本、...
工商银行全新推出“工盈研选”品... 深圳商报·读创客户端记者 詹钰叶 近日,工商银行重磅推出「工盈研选」基金销售服务品牌,以客户盈利为核...
和讯信息胡云龙:逼空走势,周五... 今天市场出现逼空走势,场内投资者因持有筹码而尤为受益。五一前布局的投资者当前收获颇丰。然而,随着上证...
今晚,油价上调! 4月21日国内成品油价格下调以来,国际市场原油价格剧烈震荡,前期大幅上涨后近日有所回落,本次调价的前...
南方东英旗下两倍做多海力士,成... 【导读】南方东英旗下两倍做多海力士,成为全球最大的个股杠杆及反向产品 中国基金报记者 伊万 人工智能...
原创 金... 黄金,这东西从古至今就没离开过中国人的生活。从老辈人压箱底的小黄鱼,到如今年轻人结婚绕不开的“三金”...