官方教程文档:https://airtest.doc.io.netease.com/
Airtest API文档:https://airtest.readthedocs.io/zh_CN/latest/
poco API文档:https://poco.readthedocs.io/zh_CN/latest/index.html
1、AirtestProject 简介
AirtestProject 是由网易游戏推出的UI自动化测试解决方案,项目构成如下:
Airtest 框架
- Airtest 框架。一个跨平台的、 基于图像识别 的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS
源码:https://github.com/AirtestProject/Airtest
API 文档:https://airtest.readthedocs.io/zh-cn/latest/
Poco 框架
- Poco 框架。一款 基于UI控件识别搜索 的自动化测试框架,它本质上也是 python 第三方库。目前支持Android原生、iOS原生、Unity3D、cocos2dx、UE4和Egret等平台,也可以在其他引擎中自行接入poco-sdk来使用。
源码:https://github.com/AirtestProject/Poco
API 文档:https://poco.readthedocs.io/zh-cn/latest/
AirtestIDE
- AirtestIDE。一个跨平台的 UI自动化测试编辑器,它是专为Airtest和Poco这两个自动化测试框架量身打造的。建议新手可以从 AirtestIDE 开始学习 Airtest 和 poco,能够快速简单地编写 Airtest 和 Poco 代码。
下载:https://airtest.netease.com/index.html
文档:https://airtest.doc.io.netease.com/
DeviceFarm
- 手机集群解决方案-DeviceFarm。网易推出的自动化测试集群解决方案,它是软硬件一体化方案,包含设备集群建设、集群设备批量维护管理、监控报警和云端真机等功能,可以为您在企业内部搭建稳定高效的设备管理平台, 提升设备利用率,赋能自动化测试流程搭建:https://airtest.doc.io.netease.com/commercial/commercial/#1_2
Airlab云测试平台
- Airlab云测试平台。支持用例管理、脚本管理、任务预约、任务调度、云端报告等功能,可以快速构建企业自动化测试全流程,支持ios和安卓的回归测试及兼容测试:https://airtest.doc.io.netease.com/commercial/commercial/#4
相关教程
- 1)Home:项目简介和新手必读
- 2)快速上手教程:针对各个平台和测试场景的自动化测试教程
- 3)AirtestIDE使用文档:编辑器AirtestIDE的详细使用文档
- 4)Airtest脚本入门:Airtest框架的介绍与脚本编写
- 5)Poco脚本入门:Poco框架的介绍与脚本编写
- 6)常见问题与脚本示例:使用本项目产品的常见问题与解决办法
- 7)教程汇总:官方公众号和博客教程链接汇总
- 8)商业方案介绍:网易自动化测试解决方案-私有云的详细介绍
2、快速上手
第一次使用时,推荐教程中的 "5分钟上手自动化测试",对整个项目有一个直观了解。
- 一、5分钟上手自动化测试——Airtest+Poco快速上手
- 二、Airtest介绍和脚本入门
- 三、Poco的介绍和入门教学
- 四、如何在Android手机上进行自动化测试(上)
- 五、如何在Android手机上进行自动化测试(下)
- 六、如何在iOS手机上进行自动化测试
- 七、如何测试Windows应用程序
- 八、微信小程序和小游戏自动化测试
- 九、如何生产兼容性强的自动化测试脚本
- 十、企业版IDE的批量运行功能
- 十一、如何测试基于Unity3D引擎的游戏
- 十二、在Windows平台上测试PC游戏
- 十三、Airtest-Selenium做Web自动化测试
3、AirtestIDE 使用文档
使用 Pycharm 进行开发
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple airtest
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pocoui
刚开始做自动化测试的新手来说,建议通过IDE提供的设备窗口去连接测试设备,这样不仅可以非常直观地看到设备的画面;还可以在运行脚本时,自动帮大家生成带连接设备参数的运行命令,减少很多不必要的错误:
Windows 窗口连接
点击 "选择游戏画面",在出现绿色/红色方框进行窗口选择的状态下,点击键盘的 esc
按键、鼠标右键均可退出状态。也可以点击 选择游戏画面
隔壁的 搜索窗口
按钮 进行连接。在嵌入窗口前,请先最小化其他无关窗口,保持桌面上只有AirtestIDE和待测窗口是激活状态。很多桌面软件由于实现方式各有不同,如果 Windows窗口一键嵌入
出现异常,比如窗口嵌入后点击失效,或者嵌入时软件报错,此时可换用 Windows窗口无嵌入连接
方案进行重试
- 下拉菜单 "设置"-"选项"-"Device" ,勾选上 Connect windows without embedding,
Windows桌面模式。测试的窗口不止一个(拥有多个不同的窗口句柄),那么单独嵌入一个窗口可能就无法满足测试需求,所以我们也提供了另外一种连接Windows的方案:桌面模式。
auto_setup(__file__,devices=["Windows:///"])
"桌面模式" 模式下,录制脚本与运行脚本都与正常情况下没有区别,只不过执行时将会 对整个桌面进行截图识别 ,甚至可以识别到AirtestIDE代码窗口里的截图语句(因此在执行脚本时,请尽量缩小AirtestIDE的窗口,避免脚本界面里的截图干扰执行结果,或者将IDE脚本窗口里面的截图转换成代码模式)。注意:如果 Windows窗口被关闭后重新打开,句柄也将会发生变化。
使用 AirtestIDE 进行开发
文档:https://airtest.doc.io.netease.com/
- 开始使用
- 设备连接
设备的 URI字符串
关于远程连接的 Android 字符串代码:如果在代码中/脚本运行时,需要填写
Android:///
字符串,又不清楚远程连接的手机应该如何填写的话,可以直接用AirtestIDE运行一次脚本,然后将IDE生成的Android:///
字符串复制使用。通常情况下,字符串需要填写的内容为Android://adbhost:adbport/serialno
,其中,adbhost和adbport一般来说默认都是本机adb,即127.0.0.1:5037
,在远程连接手机时,与本地手机不同的是设备号serialno:
- 连接 Android 手机:
# 什么都不填写,默认取当前连接中的第一台手机
Android:///
# 连接本机默认端口连的一台设备号为79d03fa的手机
Android://127.0.0.1:5037/79d03fa
# 用本机的adb连接一台adb connect过的远程设备,注意10.254.60.1:5555其实是serialno
Android://127.0.0.1:5037/10.254.60.1:5555- 连接 iOS 手机:iOS:///127.0.0.1:8100
- 连接 Windows 窗口:
# 连接一个窗口句柄为123456的Windows窗口
Windows:///123456
# 连接一个Windows窗口,窗口名称匹配某个正则表达式
Windows:///?title_re=Unity.*
# 连接 windows 桌面,不指定任何窗口
Windows:///- 使用了备选连接参数的设备。
# 夜神模拟器(127.0.0.1:62001为夜神模拟器的端口号)
Android://127.0.0.1:5037/127.0.0.1:62001?cap_method=JAVACAP&&ori_method=ADBORI
# 设备号为79d03fa的 MIUI11 设备
Android://127.0.0.1:5037/79d03fa?cap_method=JAVACAP&&ori_method=ADBORI
代码 连接 设备
Airtest 连接设备:https://airtest-refactor.doc.io.netease.com/airtest-project-docs/IDEdocs/airtest_framework/2_connect_device/
- 1. 使用 auto_setup 接口。auto_setup 是一个用来 初始化环境 的接口,它接受5个参数。可以设置当前脚本所在的路径、 指定运行脚本的设备 、设置默认的 log 路径、设置脚本父路径和指定截图精度。其中第二个参数就是指定运行脚本的设备,这里传入待连接设备的URI字符串 ,例如:# 连接本机默认端口连的一台设备号为SJE5T17B17的手机
auto_setup(__file__,devices=["Android://127.0.0.1:5037/SJE5T17B17"])
注意:devices 传入的是一个字符串列表,所以如果需要 连接多台设备 ,直接用 , 隔开多个URI字符串即可
# 连接本机默认端口连的设备号为123和456的两台手机
auto_setup(__file__,devices=["Android://127.0.0.1:5037/123","Android://127.0.0.1:5037/456"])- 2. 使用 connect_device 接口。在 connect_device 接口中传入设备的URI字符串即可连接1台设备:dev = connect_device("Android://127.0.0.1:5037/SJE5T17B17") 如果需要连接多台设备,可以编写多条的
connect_device
脚本,并且用set_current
来切换到当前使用设备:
# 连上第一台手机
dev1 = connect_device("Android://127.0.0.1:5037/serialno1")
# 连上第二台手机
dev2 = connect_device("Android://127.0.0.1:5037/serialno2")
# 切换当前操作的手机到序列号为serialno1的手机
set_current("serialno1")- 3. 使用 init_device 接口。init_device 接口只需要传入 设备平台和设备的uuid 即可。在本地命令行运行脚本时,如果 脚本里面没有任何连接设备 的语句,就需要通过在运行命令中添加
--device URI字符串
来连接设备:airtest run D:/test/test_connect.air --device Android:/// 否则命令行会提示你没有连接设备。另外,如果你的设备需要添加备选的连接参数才可以正常连接,比如模拟器或者MIUI11等的设备,则在命令行连接设备时也需要把这些参数加上:airtest run D:/test/test_connect.air --device Android://127.0.0.1:5037/127.0.0.1:62001?cap_method=JAVACAP^&^&ori_method=ADBORI
注意:Airtest 辅助窗的API快捷键,只有在IDE的设备窗口连接上设备之后,才是可以使用状态,否是都是置灰的不可用状态
- 点击:
touch
- 滑动:
swipe
- 等待截图出现:
wait
- 存在某个截图:
exists
- 文本输入:
text
- 关键词操作:
keyevent
- 截图:
snapshot
- 等待:
sleep
- 断言:
assert_exists
、assert_not_exists
、assert_equal
、assert_not_equal
- 运行脚本
- 生成报告
- 选项配置
- 拓展功能
常见问题与脚本示例
4、Airtest 脚本入门
- Airtest介绍
- 如何使用Airtest API文档
- Airtest连接设备的脚本介绍
- Airtest图像脚本介绍
- Airtest封装的ADB操作
- Airtest录屏操作
- 使用脚本生成Airtest报告
- Airtest脚本全局设置
- Airtest引入与调用
- 利用bat文件批量执行脚本
5、Poco 脚本入门
6、教程汇总
常见 api 介绍
- 1)touch点击: https://mp.weixin.qq.com/s/rrAgQCjGKZs2pzgzG496HA
- 2)swipe滑动:https://mp.weixin.qq.com/s/EjVDlRtM99EW_Uw7M0dQ-Q
- 3)text输入: https://mp.weixin.qq.com/s/WyqNa9-riLIpzEBEemT2GQ
- 4)keyevent大全:https://mp.weixin.qq.com/s/HXZVd1uwaOd9gt7IVBGNDQ
- 5)Assert断言: https://mp.weixin.qq.com/s/DEe-Emyi0hN0JZA83i1Wmg
测试框架 教程
AIRTEST
- 1)Airtest入门的超长攻略:https://mp.weixin.qq.com/s/SxK1qsweRKe0BVNU0XrTbw
- 2)Airtest接口介绍和示例汇总(上):https://mp.weixin.qq.com/s/2_BKQldtDTRZRZFhHiee3Q
- 3)Airtest接口介绍和示例汇总(下):https://mp.weixin.qq.com/s/DrIG0eE0KJT608CKWOPZIg
POCO
- 1)poco的元素定位(3种选择器): https://mp.weixin.qq.com/s/PYI-kGWZCpoaxe2Tmw5d5Q
- 2)利用正则表达式匹配Poco控件:https://mp.weixin.qq.com/s/vqCfSTTw61mviAoIEJP_BA
- 3)poco常用api介绍: https://mp.weixin.qq.com/s/PonBynNPfLqaWzp2oc689Q
- 4)项目接入Poco-SDK的常见问题:https://mp.weixin.qq.com/s/MKI9MJlNeVvMwIkfZcVqsQ
- 5)多Poco初始化教程:https://mp.weixin.qq.com/s/30hmAkz7LpssydzW3Jb0Mg
- 6)生成高效、兼容性好的Poco脚本:https://mp.weixin.qq.com/s/_cehGEZ78b8b0MHEkddw2A
除了Android和iOS原生应用无需接入pocosdk,在辅助窗内选择对应的模式即可查看应用的UI树;其他引擎渲染的游戏应用,都需要 事先在游戏应用的项目源码中接入pocosdk ,之后再打包出来安装到待测设备上,这样才能使用poco辅助窗的对应模式来查看该应用的UI树。
目前支持平台如下:Poco介绍 - Airtest Project Docs (netease.com)
小程序测试:小程序测试全攻略,还学不会你来找我(含实操代码) (qq.com)
AIRTEST-SELENIUM
- 1)在IDE中使用airtest-selenium:https://mp.weixin.qq.com/s/Fw5O8dXQ3bAX8UoyWuW9Lw
- 2)selenium常用api介绍:https://mp.weixin.qq.com/s/USSITxVH9ebueyIfSPhbSw
基础知识 教程
坐标 相关
1)Airtest和poco的坐标系介绍(绝对坐标与相对坐标):https://mp.weixin.qq.com/s/6yu0gjCEZQ_x6NwEY_rBjQ
截图 相关
1)截图识别失败、提高截图脚本兼容性01:https://mp.weixin.qq.com/s/M5RXb9Gts_nMGHODovjQew
2)截图识别失败、提高截图脚本兼容性02:https://mp.weixin.qq.com/s/lOK5lrBlmd6CGAleCZ1KwA
3)Airtest的截图识别算法介绍:https://mp.weixin.qq.com/s/cGFvU9C7mBpsmnWgDLPW5A
4)图像识别新算法mstpl的介绍:https://mp.weixin.qq.com/s/xjS-SPgmt6emmUM74lvQew
ADB 相关
1)Airtest封装的ADB操作简介:https://mp.weixin.qq.com/s/ULSsfVADTG2WlbncErbbFQ
AIRTESTIDE 相关
1)AirtestIDE的部分使用技巧:https://mp.weixin.qq.com/s/cNUKavYyy-JeErDVqQe86A
报告 相关
1)生成、导出报告全攻略:https://mp.weixin.qq.com/s/NDCcs4egVFe4Bngg_qjfjA
2)用脚本实现自动发送测试报告到指定邮箱:https://mp.weixin.qq.com/s/a23cKOBYU9jOcw6VSEcBRg
3)用命令行生成、导出报告:https://mp.weixin.qq.com/s/bc-xcCmbgHLKP9cMdhS97g
4)自定义Airtest报告的名称:https://mp.weixin.qq.com/s/-r4km9i7mvhmqOuGDU09JQ
IOS自动化
1)iOS应用自动化实操: https://mp.weixin.qq.com/s/XEqsOxIhXGjpGhUzCe4RXw
2)模拟清除iOS后台应用:https://mp.weixin.qq.com/s/wfXATdx_U5gpwIQcSQHe2g
3)使用tidevice脱离Mac搞iOS自动化测试:https://mp.weixin.qq.com/s/rAy4fB5MOCFC48o5pYK9pA
4)iOS信息获取实操:https://mp.weixin.qq.com/s/I1_EHyNE3kWvYgptOG6cCA
5)iOS部分专用接口介绍(含处理弹窗接口):https://mp.weixin.qq.com/s/jQjdum6mHKchCf933LSHSg
WINDOWS 自动化
1)Windows自动化实操: https://mp.weixin.qq.com/s/SaBCwYHTF8mnNLjBlnzt7w
2)IDE连接Windows窗口相关问题:https://mp.weixin.qq.com/s/sFdxHOXt9nIM326pnK0UGw
3)用Python模拟鼠标键盘操作:https://mp.weixin.qq.com/s/8_QNOAush9jE5sfm8RLCTA
设备连接相关
1)各种连接设备的接口介绍:https://mp.weixin.qq.com/s/znYi-eCifeMXfce9GDpW-w
2)连接安卓模拟器的常见问题:https://mp.weixin.qq.com/s/us4Jr9t21nNyKs-bGD9yyg
3)连接模拟器的案例实操:https://mp.weixin.qq.com/s/2_K4AKCfHQ59wgedXZ23wA
4)查看多开模拟器的端口号:https://mp.weixin.qq.com/s/dt8intXeelLLe0eSctCH3A
安卓微信小程序
1)测试安卓的微信小程序(随微信版本更新会失效):https://mp.weixin.qq.com/s/R02Ac3ZC1B_ND7QVik_Z8Q
常见问题及解决办法
1)pocoservice不断重启的解决办法:https://mp.weixin.qq.com/s/_3GeT89Ok1S1hBJWVoPIhA
2)点击不生效的排查办法:https://mp.weixin.qq.com/s/2dieUfDIDsEQZnd37FSVDA
3)容易混用的几个Airtest和Poco的API:https://mp.weixin.qq.com/s/5SPP2IttKvnzq0ApZcoRzw
4)Python import指南:https://mp.weixin.qq.com/s/aByXx9svkzIPe8EqSxlI_g
5)录制脚本运行的视频: https://mp.weixin.qq.com/s/3JsVjwikjo4OmtcjvmktRw
6)Yosemite输入法的相关问题:https://mp.weixin.qq.com/s/LnzToiXFVcfkeOGz8Vz9Pw
7)IDE的安卓小助手: https://mp.weixin.qq.com/s/EH0aQnr2AwG0MmFdgoE7mw
8)模拟滑动解锁、多指滑动等:https://mp.weixin.qq.com/s/JiIT0CkiY7zcdqUo-AI0GQ
9)局部截图和局部找图功能:https://mp.weixin.qq.com/s/Kd_EQit9UG5CLxw-EHM1Uw
10).air脚本和.py脚本的区别:https://mp.weixin.qq.com/s/-gGplycWKAsJ6Os3XQFARA
11)用pycharm编写airtest脚本的常见问题:https://mp.weixin.qq.com/s/Ha2Oq02lkDmMokwPxFpN6A
12)选择poco模式之后查看不到UI树:
https://airtest.doc.io.netease.com/IDEdocs/faq/2_common%20problems/#6ui
13)删除输入框的内容:
https://airtest.doc.io.netease.com/IDEdocs/faq/1_code_examples/#4
14)安卓设备连接问题:
https://airtest.doc.io.netease.com/IDEdocs/3.2device_connection/3_android_faq/
15)最常问的8大问题01期:https://mp.weixin.qq.com/s/Z2K1a1UyKUhjqVnhMCN0CQ
16)最常问的8大问题02期:https://mp.weixin.qq.com/s/hUTNdeHuCre52DUUrQbJsQ
17)最常问的8大问题03期:https://mp.weixin.qq.com/s/YcSBMA_7tkImoEYCK7UyUQ
18)最常问的8大问题04期:https://mp.weixin.qq.com/s/sbrnP9ZT9aXBdM37K5M9LA
19)Airtest快问快答01期:https://mp.weixin.qq.com/s/R_1jtOC9lsXJnqXS6xZnsw
20)Airtest快问快答02期:https://mp.weixin.qq.com/s/ZXW1OY-oqatx3u5xVvyZdA
高级 教程
1)自动化测试的文字识别:https://mp.weixin.qq.com/s/mrx2fndE9t_477yViZrpRA
2)Airtest脚本的批量运行:https://mp.weixin.qq.com/s/1YlUuiQCmMGb5_64S-si3Q
3)多机协作的实操案例: https://mp.weixin.qq.com/s/8q9IoFYvhGe1v6ow74Bfmg
4)从0到1打包项目并接入pocosdk:https://mp.weixin.qq.com/s/hhukqYAfjQ_dsQ06KC3A0g
5)提高遍历pocoUI树的效率:https://mp.weixin.qq.com/s/O5ckgX_cvOp6RQqSwYaxKg
6)如何修改Airtest源码:https://mp.weixin.qq.com/s/PnZBFrFW8f_Bn6v228fVSQ
7)利用装饰器重跑case:https://mp.weixin.qq.com/s/kzDcL62gRi7LjcIqXZhj2g
8)利用多线程解决装包过程输入密码的问题:https://mp.weixin.qq.com/s/zZJJM8-3If9-f4kP5IAx8w
9)模拟复杂的滑动/多指操作:https://mp.weixin.qq.com/s/_2hcQivHaw1vlzo4yapSbA
10)利用启动器添加自定义的命令行参数:https://mp.weixin.qq.com/s/rZK39kMbYz5jylV38Oz79A
11)利用启动器添加自定义的变量:https://mp.weixin.qq.com/s/0beP_IB5ytma1dYd2AQrew
12)Poco自动化测试的数据分离实践:https://mp.weixin.qq.com/s/9Nyu4hjXR7jhN3TP34GC3A
13)Poco和Excel读写结合的应用实践案例:https://mp.weixin.qq.com/s/nAsWIuxun4ZaFGsioeOAUA
14)利用plugins对报告做内容定制:https://mp.weixin.qq.com/s/nW0BRb-hJ8dZy0pXTeK4OA
自动化测试 案例(含脚本)
1)APP登录和退出的自动化:https://mp.weixin.qq.com/s/7HkMHbk2CgNo_PKtB-MmKg
2)循环执行脚本的实操案例:https://mp.weixin.qq.com/s/u8HikcgDDrvPrAbiDwA7ZQ
3)调用其它脚本的实操案例:https://mp.weixin.qq.com/s/4RsrAhEutK7MOqVqWr_iyQ
4)用Airtest做爬虫的实操案例:https://mp.weixin.qq.com/s/-Agd4uC2irXwDTf77arSDA
7、商业方案
私有云方案概览
集群 "建设、管理"
工业级的手机集群机柜
专业机柜