前言

Airtest是由网易研发的一款基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。该项目目前已在Github上面开源:

https://github.com/AirtestProject/Airtest

官网地址:

http://airtest.netease.com/

官方文档手册非常详细,建议大家入门可以先去看下相关的文档说明。

为什么需要Airtest?

众所周知,UI层测试按照平台种类划分有Windows、Linux、Android、Web、小程序等

针对于移动端Android & IOS平台,有最火的Appium测试框架 http://appium.io/

Web端有selenium测试框架 http://seleniumhq.org/

windows应用平台有AutoIT、Pywinauto

而业界针对游戏类的应用并没有比较好的解决方案,而Airtest测试框架应运而生,基于底层的Airtest和poco:

  • Airtest:基于Python的、跨平台的UI自动化测试框架,基于图像识别原理,适用于游戏和App。
  • Poco:基于UI控件搜索的自动化测试框架,其核心优势是除了对Android、IOS之外,对游戏也是支持的,同时也支持微信小程序、微信小游戏和H5应用。

Airtest还非常贴心的配备了Airtest IDE,不需要写一行脚本,即可完成脚本的录制。

Airtest IDE录制

录制Android平台自动化脚本

step1 检测设备链接状态

本地安装的雷电模拟器

C:\Users\Administrator>adb devices
List of devices attached
emulator-5554 device
step2 Airtest IDE连接设备

可以看到Airtest可以直接将设备画面进行映射,同Appium的inspector或者UIAutomatorViewer.bat工具不一样

step3 录制脚本

点击录制即可开启录制功能,并且提供了很多不同的元素操作,如:点击、等待、滑动、断言等等

这里以柠檬班App为例,录制登录测试用例

录制回放

Airtest采取图像识别方式,这种方式比较适合游戏自动化

但是在脚本的兼容性方面存在一些问题(屏幕的分辨率、图标大小等)。官方也给了几个小的技巧:

  • 1、提升截图技巧-尽量截图完整图片
  • 2、调整图像识别阈值
  • 3、利用灰度图像识别

这些方式只能尽量优化,并不能根本上解决,所以官方最终建议是尽量使用poco:通过UI元素属性信息定位

poco

Airtest提供另外一种更加稳健的元素操作方式-基于UI控件搜索框架poco

# -*- encoding=utf8 -*-
__author__ = "Administrator" from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco = AndroidUiautomationPoco(use_airtest_input=True, screenshot_each_action=False) poco("柠檬班").click()
poco("com.lemon.lemonban:id/navigation_my").click()
poco("com.lemon.lemonban:id/fragment_my_lemon_avatar_title").click()
poco("com.lemon.lemonban:id/et_mobile").set_text(18588220152)
poco("com.lemon.lemonban:id/et_password").set_text(123456)
poco("com.lemon.lemonban:id/btn_login").click()

可以看到 poco这种模式更加适合公司项目,如果你自己会Python,还可以在脚本的基础上继续拓展,比如:应用PO设计模式 分层设计 等等。

最新文章

  1. Leetcode Minimum Window Substring
  2. 二模 (11) day1
  3. shell中的大括号和小括号
  4. Mac下运行ASP.NET Core应用程序
  5. Spring的annotation用在set方法上 hibernate的annotation用get方法上
  6. JAVA中的继承和覆盖
  7. 在SQL中用正则表达式替换html标签
  8. qt-solutions提供了8个开源项目
  9. COCOS2D-X 不反复随机数
  10. Linux内核驱动将多个C文件编译成一个ko文件的方法——每一个C文件中都有module_init与module_exit
  11. Objective-C中经常使用的结构体NSRange,NSPoint,NSSize(CGSize),NSRect
  12. CentOS 6.5安全加固及性能优化
  13. NotePad++ for PHP
  14. freemarker中的list 前端模板
  15. XamarinForm Effects 调用事件
  16. [Spark][Streaming]Spark读取网络输入的例子
  17. 机器学习之线性回归---logistic回归---softmax回归
  18. Linux中添加、修改和删除用户和用户组
  19. 【JSP】JSP的介绍和基本原理
  20. (转载)hibernate缓存

热门文章

  1. EF 通过导航添加数据
  2. 华为方舟编译器 下载 和 LiteOS Studio Setup 2019-04-16.exe SDK下载
  3. PIE SDK 多数据源的复合数据集加载
  4. 2019 医渡云java面试笔试题 (含面试题解析)
  5. Python模块File文件操作
  6. Flask模板渲染
  7. 一、NodeJS入门——准备工作(1)——NodeJS的安装
  8. 2019-09-09 memcache
  9. 微信小程序页面调用自定义组件内的事件
  10. iOS硬解H.264:-VideoToolboxDemo源码分析[草稿]