Airtest全称AirtestProject,是由网易游戏推出的一款自动化测试框架,在软件测试的时候使用到了该框架。这里记录一下安装、使用和遇到的坑的问题…
Airtest的官网介绍项目构成
Airtest:是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和iOS
Poco:是一款基于UI控件识别的自动化测试框架,目前支持Unity3D/cocos2dx-*/Android原生app/iOS原生app/微信小程序,也可以在其他引擎中自行接入poco-sdk来使用
源码
AirtestIDE:跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写Airtest和Poco代码。
AirLab:真机自动化云测试平台,目前提供了TOP100手机兼容性测试、海外云真机兼容性测试等服务,请访问官网以了解更多
如何上手?
项目基于Python,因此写出来的所有脚本都是Python代码,建议在使用前,先学习Python的基础语法知识。
在编写自动化脚本时,可以配合官方提供的AirtestIDE编辑器,能够快速编写脚本。
自动化脚本,以及Airtest和Poco,都是基于Python的,因此也可以使用自己喜欢的Python编辑器来编写脚本
一、安装
Airtest有两种安装方式,一种是下载安装AirtestIDE,该IDE自带一个python环境和Airtest库。支持可视化选取组件测试。缺点就是你自己安装的Python环境和第三方模块无法在这IDE中使用,只能重新安装相关模块。
在使用中先是安装了AirtestIDE,在官网很快就可以下载安装使用。打开IDE,左边是Airtest辅助窗口和Poco辅助窗口,Airtest辅助窗口可以快速完成截图识别图片加点击、滑动等操作代码的生成。而Poco辅助窗口可以查看应用控件树,快速生成与应用控件操作的相关代码。中间则是代码编辑框和Log窗体,用于编辑代码和查看输出结果等信息。右边是设备窗口,可以进行连接设置和设备选定,当选定设备后,右边的设备窗口将会变为被选定设备的当前UI界面。IDE界面如下图所示。
二、使用
可以从官网的介绍了解到Airtest采用了图形脚本语言Sikuli的思路,使用者不需要一行行的编写测试的代码,而是用截图的方式生成相关的操作代码(当然熟悉相关Api的也可以用手写代码方式)。下图所示为通过截图实现的小Demo。
官方文档: https://airtest.doc.io.netease.com/
三、在本地环境中使用及遇到的问题
1.使用"pip install airtest" 进行安装
项目支持Python(2.7或<=3.6)的运行环境,官方更推荐使用 Python3。在实践过程中, 起初没有在意这个python版本的问题,仍坚持使用了python3.8环境进行安装,但是python3.8及以上版本是不能正常安装。安装时会报如下错误:
ERROR: Could not find a version that satisfies the requirement opencv-contrib-python<=3.4.2.17 (from airtest) (from versions: 3.4.8.29, 3.4.9.31, 3.4.9.33, 4.1.2.30, 4.2.0.32, 4.2.0.34)
ERROR: No matching distribution found for opencv-contrib-python<=3.4.2.17 (from airtest)
因为Airtest依赖的opencv-python的版本要小于3.4.2.17,而python3.8只能安装版本大于3.4.2.17的opencv-python库,即使你下载了opencv-python 3.4.2.17版本以上的whl文件进行本地安装也是行不通的,安装的时候python3.8的环境下会报error提示不支持安装此版本的opencv。
解决方法:可以安装两个版本python,使用时进行切换环境;或者降低python版本;或者直接使用AirtestIDE…
2.IDE连接不存在设备或被占用设备容易假死
在进行远程连接时,如果尝试连接一个不存在的设备,或者已经被占用的设备,会造成IDE几秒假死;
3. 假死期间关闭IDE会造成adb驻留
在IDE假死期间关闭IDE,则adb有可能不会正常退出造成驻留,造成再开一次IDE又会唤起一个新的adb进程。这个情况是偶发性的,有时候能在假死的时候复现出,有时候不能。
4.尝试连接不存在设备时,即使设备是不存在的也会加入列表
当尝试连接不存在设备时,即使设备是不存在的也会加入列表,状态显示的是offline。通常来说,通过 adb devices命令应该可以查看到连接的设备,不知道这样显示是不是有别的用意。除此之外,模拟器是需要进行adb connect才能在IDE中进行操作的。因此,还遇到了有时候进行连接时,会出现即使设备在线(已经确定端口没被占用),也是显示offline。
四、最后啰嗦几句
AirtestProject作为近几年开发的移动自动化测试框架来说,其特点可谓鲜明。其一,支持跨平台;其二,对于原生应用、Hybird应用、Web应用都有很好的支持度,还支持移动游戏测试。其三,采取图形脚本语言Sikuli的思路,通过相应的IDE可以选取动作加截图实现代码的编写。同时项目在Github上开源,Issue有较好的活跃度。
在实际使用过程中,健全的开发者文档帮助解决了很多问题。虽然内容后面描述了很多IDE的BUG, 并不意味着AirtestProject不是一个好的自动化测试框架。毕竟IDE只是一个编辑器,不代表项目本身。相反,Airtest的各种特性让其表现出色。使用AirtestIDE让人快速上手开发的特点也不会因为这些BUG表现很糟糕。在使用时可以通过一些操作避免BUG发生,比如连接时不要频繁点击,假死关闭时把相应的进程也给清除,连接不上可以重新启动模拟器或者查看相应端口是否被占用等。总而言之,我相信AirtestIDE在之后会进行更多的优化…
到此这篇关于python Airtest自动化测试工具的的使用的文章就介绍到这了,更多相关python Airtest自动化测试内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!