Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Airtest跨平台的UI自动化测试框架(一)

Airtest跨平台的UI自动化测试框架(一)

作者头像
用户5521279
发布于 2020-06-12 02:35:21
发布于 2020-06-12 02:35:21
2K0
举报
文章被收录于专栏:搜狗测试搜狗测试

一、什么是Airtest

Airtest是网易出品的一款基于图像识别和poco控件识别的UI自动化测试工具。支持WindowsAndroid、IOS平台。 Airtest提供了跨平台的API,包括安装应用、模拟输入、断言等。可结合python脚本进行自动化。测试脚本运行后可以自动生成详细的HTML测试报告。

二、Airtest环境部署

① 官网地址:http://airtest.netease.com/; ② Airtest IDE自身集成了adb,因此不需要配置环境变量,下载解压即可; ③ Airtest IDE用到python,因此需要安装部署python的环境;建议用Python3.X以上版本; ④ 其余用到的python的库,根据需要自行安装即可,例如OpenCV; ⑤ 一切就绪之后,启动AirtestIDE.exe,可以忽略注册,直接skip即可; ⑥ 进入到IDE,右上角的设备管理区域,建议选择use adb touch,具体界面图如下:

注释:软件部署成功之后,连接设备之后,设备端会生成两个插件,Yosemite和PocoService。

三、Airtest项目实践

小编最近利用Airtest编辑浏览器自动化脚本,遇到的难点不是业务本身,而是工具资料的不全,给实践过程中带来很多不便。因此觉得有必要整理一番,以下Api均为小编实践运用,验证可行,后续会陆续补充。 1、 点击

  • 单击:touch((x,y)),例如,touch((200,500)),表示点击x为200,y为500的位置点;
  • 双击:touch((x,y),times=times),times表示点击次数;例如,touch((200,500),times=2),表示双击x为200,y为500的位置点,默认双击事件为0.01秒;
  • 长按:touch((x, y),duration=duration),duration为长按时间,默认为0.01;例如,touch((200,500),duration =1),表示长按x为200,y为500的位置点1秒;
  • text控件点击:poco(text = text名称).click();例如,poco(text =“设置”).click(),表示点击控件text名称为“设置”的控件;
  • name控件点击:poco(“控件名称”).click();例如,
  • poco(“sogou.mobile.explorer.hmct:id/ff”).click(),表示点击控件name名称为“sogou.mobile.explorer.hmct:id/ff”的控件;
  • resourceId控件点击:poco(resourceId =resourceId名称).click();例如,
  • poco(resourceId=“sogou.mobile.explorer.hmct:id/ff”).click(),表示点击控件resourceId名称为“sogou.mobile.explorer.hmct:id/ff”的控件;

注释:resourceId控件名称通常前面包含“r”,但是在点击时要去掉;获取设备坐标可以利用手机的开发者模式中的【显示触摸位置】。 其他的控件内容如下:

2、 滑动 Airtest滑动Api为swipe((x1, y1),(x2,y2),steps= 5,duration=0.2),前两个参数为滑动的前后两个坐标;steps为滑动的步数;duration为滑动的时间;例如,swipe((100,350),(200,350),steps = 5,duration=0.2)表示从坐标(100, 350)滑动5步到(200,350),滑动时间为0.2秒; 注释:swipe中的steps默认为5,但是实践证明,对于用户教育页的场景,至少得10秒,因此为了保险起见,建议赋值10。 3、文本输入 Airtest文本输入Api为text(“文本信息”,enter = False,search=True),第一个参数为输入的文本信息;第二个和第三个类似,均为自动搜索,相当enter,可以不写,除非需要检验输入框内容,此时可以将第2个和第3个参数赋值Fasle; 4、断言 Airtest断言分为图片断言,控件断言。目前常用的是图片断言assert_exists()和控件断言exists();

  • assert_exists(“图片信息”,测试描述点),例如:assert_exists(Template(图片路径), "验证是否成功")返回的为坐标点,因此作为断言,一般会采用标记位,即建立一个flag,命中则true,反之则false;
  • poco(控件名称).exists(),表示控件是否存在,存在则标记位返回true;反之为false;

5、安装应用 Airtest安装应用的Api为install_app(apkPath,replace= False), apkPath为应用路径,replace为是否为覆盖安装开关,默认为False;用法如下:

6、卸载应用 Airtest卸载应用的Api为uninstall(“package_name_of_your_apk”),package_name_of_your_apk为应用包名,用法如下:

7、启动应用 Airtest启动应用的Api为start_app(“package_name_of_your_apk”), package_name_of_your_apk为应用包名,用法如下:

8、退出应用 Airtest启动应用的Api为stop_app(“package_name_of_your_apk”), package_name_of_your_apk为应用包名,用法如下:

四、Airtest参考资料

Airtest中文官网文档:https://airtest.readthedocs.io/zh_CN/latest/

五、Airtest经验之谈

不要直接调用Api执行,采用“先封装后调用”的方法。例如Airtest中点击,滑动的操作,直接调用不仅代码冗余,而且不美观,可读性差,可以将点击,滑动的Api进行封装,用时直接调用即可;例如可以新建一个公共类,里面包含所有原始操作,如下图:

② 不要直接用图片进行点击,采用控件点击的方法。图片点击不仅看着代码结构不美观,而且只局限于固定的图片,一旦UI发生改变,点击就会出现问题; ③ 封装的方法不要直接写死参数,采用“数据驱动”的方法。封装的目的是代码层级结构明显,可读性强,代码复用性好; ④ 如何调用已有的方法。例如,小编代码结构存在Common.py,在业务类中调用Common.py中的函数,可以如下操作:

⑤ 对于控件元素有雷同的如何处理。控件之间存在父子关系和控件对应关系,当遇到儿子或者父亲名称一样的情况,可以采取“父找子”,“子找父”,“控件对应”的方法。例如:

六、实践不足之处

目前的控件只适用于当前软件,一旦布局发生变化,则当前脚本不再适用,因此后续会改为“数据驱动”,动态获取数据资源,这样一来兼容性将大幅度提高。

七、结尾

以上是小编最近在使用Airtest期间的总结,初步满足了项目需要,后续随着业务需求的增加,小编会继续总结Airtest的用法,欢迎大家批评指正。

八、后续文章

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[1054]Airtest的探索使用
Airtest是网易出品的一款基于图像识别和poco控件识别的一款UI自动化测试工具。Airtest的框架是网易团队自己开发的一个图像识别框架,这个框架的祖宗就是一种新颖的图形脚本语言Sikuli。Sikuli这个框架的原理是这样的,计算机用户不需要一行行的去写代码,而是用屏幕截屏的方式,用截出来的图形摆列组合成神器的程序,这是Airtest的一部分。
周小董
2021/10/15
1.6K0
基于AirTest+Python的ios自动化测试demo(微信朋友圈无限点赞)
AirTest相比Appuim有个好处就是可以对GUI图片进行捕捉和最新版本支持WebView(目前Appuim不支持iOS12的WebView进行Xpath抓取) AirTest环境搭建可参考以下链接: https://airtest.netease.com/docs/docs_AirtestIDE-zh_CN/1_quick_start.html
freesan44
2018/12/27
7.5K0
Airtest Project:一款免费的自动化测试工具
Airtest Project是网易出品的一款自动化解决方案,它适用于任意游戏引擎和应用的自动化测试,并且支持Android和Windows。 Airtest 是一个自动化测试框架提供了利用图像识别技术,Airtest Project不需要依赖被测对象的源码。 Airtest Project是跨平台的API,它基本和所有Android移动应用程序和Windows游戏兼容。 在2018年3月26号的Google开发者日上,Google也宣布了这款由网易开发的项目,因此很值得一试。 Airtest Project提供了一个自动化测试编辑器Airtest IDE,Airtest IDE使用了基于图像识别的UI自动化测试框架—Airtest来进行控件定位;它同时集成了POCO框架,POCO框架是基于控件识别的UI自动化框架,支持主流游戏引擎:Cocos2d-x, Unity3d,支持Android原生应用。因此可以选择是用图像识别或者基于控件定位的方式来进行控件定位。
Altumn
2019/10/21
3.3K0
Airtest Project:一款免费的自动化测试工具
基于图像识别框架Airtest的Windows项目自动化测试实践
上个星期分享了《基于Sikuli GUI图像识别框架的PC客户端自动化测试实践》,但sikuli看起来怎么都像是上个世纪的界面风格,且功能过于简陋。而同样基于图像识别框架的Airtest,则无疑强大了许多,本次分享的内容是基于Airtest实现Windows应用的自动化测试,内容大纲:
大刚测试开发实战
2022/11/14
1.9K0
基于图像识别框架Airtest的Windows项目自动化测试实践
手机自动化测试IDE ----- Airtest的安装和IDE控件详解
大家好,我是IT共享者,人称皮皮。这篇文章主要给大家分享手机自动化测试IDE ----- Airtest的安装和IDE控件详解相关知识,一起来看看吧。
前端皮皮
2021/04/30
8150
聊聊 Airtest 自动化工具
很多读者看过之前的文章,发现我使用最多的是一款 Airtest 的自动化测试框架。
测试开发社区
2019/10/31
1.7K0
聊聊 Airtest 自动化工具
airtest测试用例_Airtest 常用方法
auto_setup(__file__,devices=[“Android://127.0.0.1:5037/SJE5T17B17”])#方法二:用connect_device()方法连接设备
全栈程序员站长
2022/11/15
1.7K0
手机自动化测试IDE-----Airtest基本操作方法
大家好,我是IT共享者,人称皮皮。这篇我们来讲讲手机自动化测试IDE-----Airtest。
前端皮皮
2021/04/30
1.4K0
AirtestIDE - 跨平台UI自动化测试
基于图像识别的UI自动化测试,通过智能地识别和比对用户界面中的图像元素,实现了更高效、更精确的自动化测试,还能有效应对界面变化带来的挑战。
wangmcn
2024/12/09
2820
AirtestIDE - 跨平台UI自动化测试
Airtest IDE 自动化测试16 -断言相等和不相等(assert_equal , assert_not_equal)
assert_exists 和 assert_not_exists 在前面这篇写过https://www.cnblogs.com/yoyoketang/p/14803947.html
上海-悠悠
2021/06/25
1.6K0
Airtest IDE 自动化测试16 -断言相等和不相等(assert_equal , assert_not_equal)
Airtest给爱豆点赞
Airtest 是一个跨平台的、基于图像识别的UI自动化测试框架,适用于游戏和App,支持平台有Windows、Android和ios。
李玺
2021/11/22
1.1K0
Airtest给爱豆点赞
Android自动化测试探索(四)uiautomator2简介和使用
项目Git地址: https://github.com/openatx/uiautomator2
周希
2019/10/15
6.2K0
手机自动化测试IDE-----Airtest实战篇
前面我们讲到了Airtest的基础知识,手机自动化测试IDE-----Airtest基本操作方法,手机自动化测试IDE ----- Airtest的安装和IDE控件详解,今天我们就来说说Airtest的具体操作方法吧,让我们轻松实现软件自动化,真正解放我们的双手吧。
前端皮皮
2021/05/18
1.1K0
手机自动化测试IDE-----Airtest实战篇
移动端APP自动化测试框架-UiAutomator2基础
很早以前,我用uiautomator+java实践过Android APP自动化测试,不过今天要提的不是uiautomator,而是uiautomator2。听起来uiautomator2像是uiautomator的升级版,但是这两款框架仅仅是名字上比较相似,实际上没有任何关联。
大刚测试开发实战
2022/11/14
2.6K2
移动端APP自动化测试框架-UiAutomator2基础
自动化篇 | 你想要的闲鱼日常操作,Python 给你实现了
前篇文章讲了如何在 iOS 端使用 Airtest 实现自动化的操作,本篇将继续带大家做 iOS 端的自动化项目。
AirPython
2020/03/23
3.6K2
自动化篇 | 你想要的闲鱼日常操作,Python 给你实现了
薅羊毛 | Python 自动化带你轻松赚钱
最近,有一个朋友告诉我,她在某平台上购买了一部手机,收到货之后发现商品质量挺好的,价格也不贵。
数据森麟
2019/10/15
1.1K0
薅羊毛 | Python 自动化带你轻松赚钱
Airtest IDE 自动化测试9 - swipe 滑动屏幕
swipe 方法作用:从v1 经历 steps 步滑动到 v2,且期间总持续 duration 秒,相当于每步是 duration/steps 秒。 如果没有 v2 值则滑动的方向依赖于 vector 的滑动比例值为终点
上海-悠悠
2021/06/24
4.4K0
Airtest IDE 自动化测试9 - swipe 滑动屏幕
使用Airtest超快速开发App爬虫
想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你就能抓到,最快只需要2分钟,兼容 Unity3D、Cocos2dx-*、Android 原生 App、iOS App、Windows Mobile……。
青南
2019/02/26
2.3K0
快速搞定 uiautomator2 自动化测试工具使用
Google 官方提供了一个 Android 自动化测试工具(Java 库),基于 Accessibility 服务,功能很强,可以对第三方 App 进行测试,获取屏幕上任意一个 App 的任意一个控件属性,并对其进行任意操作,但有两个缺点:
霍格沃兹测试开发
2020/08/31
5.1K0
快速搞定 uiautomator2 自动化测试工具使用
Appium自动化测试框架
自动化测试需要通过代码的形式告诉手机测试那个应用程序的哪一个界面,所以需要通过某种方式定位到某个应用程序的某个页面。
大忽悠爱学习
2022/07/12
2.1K0
Appium自动化测试框架
推荐阅读
相关推荐
[1054]Airtest的探索使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档