Airtest-UI 自动化集大成者

前言

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 还非常贴心的配备了 Airtest IDE,不需要写一行脚本,即可完成脚本的录制。

Airtest IDE 录制

录制 Android 平台自动化脚本

step1 检测设备链接状态

本地安装的雷电模拟器

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

image.png

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

step3 录制脚本

点击录制即可开启录制功能,并且提供了很多不同的元素操作,如:点击、等待、滑动、断言等等
image.png
这里以柠檬班 App 为例,录制登录测试用例
image.png
录制回放
image.png

Airtest 采取图像识别方式,这种方式比较适合游戏自动化
但是在脚本的兼容性方面存在一些问题(屏幕的分辨率、图标大小等)。官方也给了几个小的技巧:

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

poco

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

image.png

# -*- 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 操作
shakebabe 在 2020-08-06 17:36:34 更新了该帖
3 回帖
请输入回帖内容 ...
  • wen

    airtest 更容易上手,他们有自己的一个工具,对代码不用有过深的研究也可以入手使用

  • 其他回帖
  • shakebabe
  • shine11

    airtest 是不是比 appinum 好用?它和 appinum 各自的优缺点是什么。

    1 回复