前言
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設計模式 分層設計 等等。