UI自動化測試之Airtest


官方文檔:
本文我們講解下Airtest的使用,主要學習目標有以下幾點:
(1)認識Airtest
(2)了解Airtest能做什么
(3)Airtest安裝及環境搭建
(4)掌握Airtest圖形化api使用
(5)Airtest實現APP電商自動化測試
(6)Airtest連接ios真機實現自動化測試

Airtest簡介及環境搭建

1、Airtest簡介
Airtest由網易團隊出品,是一個基於圖像識別原理的跨平台UI自動化測試框架,適用於游戲和應用程序。
特點:
(1)跨平台:Airtest幾乎可以在所有平台上執行游戲和APP自動化
(2)易操作:使用圖像識別技術來定位UI元素,無需嵌入任何代碼即可對游戲和應用進行自動化測試。
(3)可擴展性:通過使用Airtest提供的命令行和Python API接口,可以輕松地在大規模設備集群上運行腳本
(4)GUI工具:AirtestIDE是一個強大的GUI工具,可以幫助你錄制和調試腳本。
 
擴展:Airtest的3種圖像算法SURFMatching、TemplateMatching和BRISKMatching 深度對比。
(1)模板匹配 TemplateMatching
  • 優點是速度很快,缺點是無法跨分辨率識別
  • 一定有相對最佳的匹配結果
  • 方法名:"tpl"
(2)特征點匹配
  • 跨分辨率識別
  • 不一定有匹配結果
  • 方法名列表:["kaze", "brisk", "akaze", "orb", "sift", "surf", "brief"]
特征點匹配算法的性能對比結論:
內存占用:kaze > sift > akaze > surf > brief > brisk > orb
CPU占用:kaze > surf > akaze > brisk > sift > brief > orb
運行時長:kaze > sift > akaze > surf > brisk > brief > orb
識別效果:sift > surf > kaze > akaze > brisk > brief > orb
 
2、Airtest能做什么
Airtest支持:Game、Windows應用、Andriod應用、iOS應用、web應用的自動化測試。
特點:
Game:借助圖像識別和UI層次結構,支持所有游戲引擎和應用,多平台,使用方便。
Android:Android源生應用測試的測試過程中, Air test可以發揮至關重要的作用, 即插即用。
Wino dws:支持Windows應用, 一次編寫, 跨平台運行。
iOS:Airtest支持對iOS進行方便快捷的測試,可以通過Poco庫來快捷獲取iOS設備頁面中的原生元素的位置和信息。
Web:基於Chrome Devtools Protocol協議,自動錄制生成selenium腳本, 精確定位與操作界面元素。
 
Airtest優點:
1)框架基於圖像識別,UI和控件識別,操作簡單,功能簡潔。
2)對代碼能力要求不高,容易上手。結合工具本身的腳本錄制功能,開發腳本速度快,適合版本快速迭代的要求。
3)可引入Python第三方庫,支持Python進行個性化腳本編程。
4)可一鍵生成測試報告,報告美觀,清晰明了。
Airtest缺點:
1)最大的缺點是圖像、控件定位不夠准確,如果不同設備的尺寸、分辨率不同,或者圖像的背景色變化,控件圖案修改的話。
2) 因為是基於圖像識別的框架,所以代碼執行速度慢,容易造成圖像識別不到。
總結:優點大於缺點,且圖像識別准確度的問題有很多辦法可以改善、提高。
 
3、Airtest庫
Airtest有圖像識別、Poco、selenium三大類庫。
 
4、Airtest環境搭建
(1)Python
輸入cmd打開命令行窗口,執行命令:pip install -U airtest
說明:安裝Python的Airtest庫,通過Python代碼直接調用Airtest庫的API方法。
提示:此方法需要有一定的Python基礎。AirtestIDE內置了Python3.6.5,親測Python3.6.5版本可以安裝airtest。
(2)GUI工具
工具:AirtestIDE
說明:AirtestIDE工具自帶Python環境,下載解壓即可使用,免安裝。
提示:使用工具可以錄制操作,也可以手動編寫調用API。
本次視頻教程學習GUI工具。
(3)下載AirtestIDE
(4)解壓
(5)啟動
雙擊AirtestIDE.exe可執行程序即可。
(6)Airtest頁面布局
 

Airtest與安卓模擬器進行連接

常用的安卓模擬器:網易的MUMU、夜神、雷電等。我們這里使用網易MUMU,直接下載安裝到C:\Program Files\MuMu
1、准備工作
(1)打開開發者模式
一般安卓手機:進入設置—>系統(或關於手機)—>找到版本號,多點擊幾次,就可以開啟開發者模式。
小康設備:首頁下拉進入導航欄—>時間連續點擊5次—>點擊原生設置—>系統—>關於AIV—>版本號連續點擊7次
說明:如果設備已經打開開發者模式,點擊版本號會提示:您正處於開發者模式。
(2)打開USB調試模式
先打開開發者模式,進入開發人員選項,可開啟USB調試。
注意:一定要選擇USB配置:MIDI(打開文件傳輸)!!!
(3)連接設置
a.啟動安卓模擬器
b.在Airtest窗口點擊【刷新ADB】或【遠程設備連接】
c.使用備用連接參數,設置兼容模式
AirtestIDE提供了3個備用的連接參數: Use javacap 、Use ADB orientation 和 Use ADB touch
① 第一個 Use javacap ,是給部分無法正常看到手機畫面、minicap初始化失敗 的手機或設備用的,所以模擬器看到黑屏、部分特殊的平板等設備可以考慮勾選這個選項。
② 第二個 Use ADB orientation 是 屏幕旋轉 的,如果在安卓手機屏幕旋轉方向檢測有問題、或者是部分特殊的平板無法顯示正確的屏幕方向時可以勾選。
③ 第三個 Use ADB touch 是 發送adb指令來點擊屏幕 ,效果很差,速度也很慢,不建議勾選,只有在部分無法點擊屏幕的特殊安卓設備上才需要使用(例如智能后視鏡、特殊型號的平板等設備上) 正常情況下,手機都可以點擊,如果無法被點擊(比如小米設備),一般都是因為手機設置有選項漏了打開,特別是小米設備要注意 開啟允許模擬點擊 的設置。
 
(4)修改設備地址及端口號(因為真機或模擬器都分不同的廠商)
Airtest遠程連接,默認展示的是網易MUMU的端口號。如果使用其他廠商的模擬器,需要修改端口號。
常用模擬器的默認IP地址和端口號如下:

Airtest圖像庫(Touch、腳本運行、測試報告)

1、學習目標
掌握touch方法應用
掌握腳本運行
掌握測試報告查看
理解圖像識別擴展(位置、匹配度)
 
2、Airtest圖像框架API查看參數信息
方法:將光標懸停到左側欄API上,氣泡顯示調用該方法所需要傳入的參數。
 
3、Touch方法
作用:觸摸/點擊動作
常用參數:
v : 點擊對象的圖像或坐標
times: 點擊次數,默認是1
duration: 點擊時間,默認是0.01秒
 
(1)需求:
使用Touch方法,點擊啟動小康桌面應用(電視家)
運行腳本測試是否成功
 
(2)需求實現步驟:
a、新建腳本類型選擇
.air Airtest項目:生成一個【項目名稱.air】的目錄,目錄下有一個【項目名.py】的文件
.py 純Python(高級用戶):生成一個純Python的【項目名.py】的文件
 
兩者區別和聯系:
相同點:都是Python文件
不同點:腳本文件的初始化代碼不用,一個無法看到默認值,另一個可以看到默認值並可以修改。
提示:Airtest自帶Python解釋器及標准庫,無需單獨安裝Python。
 
b、使用Touch點擊小康桌面應用(電視家)
左側點擊Touch
右側拉選電視家icon圖標
 
c、運行腳本
點擊三角形的【運行】按鈕,或者使用快捷鍵F5
停止運行:Shift + F5
運行單行代碼:選中代碼行,右鍵,選中並單擊“只運行選中代碼”
 
d、查看報告
方法1:點擊菜單欄【運行】——>打開報告目錄
方法2:右鍵腳本文件名稱Tab——>打開報告文件目錄
方法3:使用快捷鍵:Ctrl + L
方法4:cmd打開命令行窗口,進入腳本所在路徑,執行如下命名:
airtest report D:\zxt\AirtestIDE\xiaokang.air\xiaokang2_auto_script.py --log_root D:\zxt\AirtestIDE\xiaokang.air\log --outfile D:\zxt\AirtestIDE\xiaokang.air\log\xiaokang2_auto_script.log\log.html --static_root D:\zxt\AirtestIDE\airtest\report --lang zh --export D:/zxt/AirtestIDE/xiaokang.air/log
方法5:右鍵腳本文件名稱Tab——>導出報告
這種方法,可以將相對路徑的圖片資源和靜態資源整個打包,后續發送給其他查看。
方法6:
# generate html report
from airtest.report.report import simple_report
simple_report(__file__,logpath=True,output='D:\zxt\AirtestIDE\xiaokang.air\report\log.html')
 
4、圖像識別擴展
在腳本編輯區域,雙擊圖片,展示Image Editor彈框,如下:
filename: 圖片文件名稱,自動生成
threshold: 閾值或臨界值,只有達到設置的閾值,圖像識別才能成功。
target pos: 擊位的目標點置,默認是位置5。圖片的目標位置一共分上、中、下9點位,正中間區域是位置5.

Airtest圖像API-wait

wait()方法
作用:在等待界面元素出現,默認0.5s找一次,最多找20s。如果找到則返回返回圖片中心點坐標;否則,raise TargetNotFoundError
常用參數:
v:圖片
timeout:等待超時時間,默認是20s
interval:每次匹配的時間間隔
 
需求:進入小康首頁,等待“娛樂”icon出現,0.1s查找一次,持續3s,如果找到,點擊“娛樂”icon。
小結:
(1)wait方法解決什么問題?
解決界面元素存在,但加載需要時間的問題。
 
第6課、Airtest圖像API-swipe
swipe方法基本使用:
作用:從屏幕一個位置滑動到另一個位置
常用參數:
v1: 圖片 或 坐標(x,y)
v2: 圖片 或 坐標(x,y),從v1滑動到v2
vector: [x,y]錄制時自動生成,記錄了屏幕中的滑動比例,向右為x軸正方向,向下為y軸正方向。
 

Airtest圖像API(text、snapshot、sleep、keyevent)

1、text方法
作用:輸入文本操作
常用參數:
text: 要輸入的文本
(注:輸入的位置為當前頁面光標焦點所在的位置,一般與touch方法一起使用)
enter: 完成輸入后自動執行Enter操作,默認為True
 
2、keyevent方法
作用:模擬鍵盤按鈕輸入,支持鍵碼,如3為home鍵
常用參數:
keyname: 固定鍵名或鍵碼,參考:https://www.cnblogs.com/vip136510786/p/14705567.html
 
3、snapshot方法
作用:截取當前屏幕圖片,可以在測試報告中顯示。
常用參數:
filename: 保存截屏為指定文件。
msg: 描述測試點,可在html報告中呈現。
 
4、sleep方法
作用:暫停時間
常用參數:
secs: 暫停時間,單位秒,默認1.0s
示例需求:
啟動百年奧萊app
點擊搜索輸入框
輸入:耳機
完成屏幕截圖
暫停3秒
按home鍵,返回桌面

Airtest圖像API-斷言方法

1、assert_exists方法
作用:斷言頁面存在某元素,結果是布爾類型值
常用參數:
v: 圖片
msg:描述測試點
return:找到圖片,則返回圖片中心點坐標;否則,將raise AssertionError
 
2、assert_not_exists方法
作用:斷言頁面不存在某元素,結果是布爾類型值
常用參數:
v: 圖片(注:判斷當前頁面中不存在指定圖片,不存在則通過,存在則不通過)
msg:描述測試點
 
3、assert_equal方法
作用:判斷第一個值和第二個值相等
常用參數:
first:第一個值
second:第二個值
msg:描述此斷言語句對應的測試點內容。
 
4、assert_not_equal方法
作用:判斷第一個值和第二個值不相等
常用參數:
first:第一個值
second:第二個值
msg:描述此斷言語句對應的測試點內容。
 
需求:
啟動百年奧萊APP
判斷首頁是否存在搜索圖標
點擊底部【分類】TabBar
斷言不存在搜索圖標
斷言False與assert_exists(搜索圖標圖片)的值是否相等
查看測試報告如下:

Airtest圖像框架實戰(app登錄、退出)

1、需求:
啟動釘釘APP
實現登錄、退出業務自動化,並斷言是否登錄成功、退出成功
2、拓展:
如何解決無法輸入賬號的問題:MUMU模擬器設置——>語言和輸入法——>將輸入法改為nemu-vinput
 
切換代碼模式:在代碼編輯區域,選中代碼行,右鍵選擇並點擊“圖片/代碼模式切換”。

Airtest-實戰iOS真機(環境搭建)

1、環境搭建需要
(1)硬件
一台蘋果電腦(運行xcode)
一部iphone手機(運行APP)
(2)軟件
iOS-Tagent(WebDriver服務器)
xcode(iOS集成開發工具,運行iOS-Tagent)
iproxy(代理工作,做端口映射)
AirtestIDE(圖像識別自動化測試工具)
 
2、軟件功能
(1)iOS-Tagent
作用:在手機上創建一個WebDriver服務器,可用於遠程控制iOS設備,定位UI元素。
運行依賴:xcode
 
(2)xcode
作用:iOS集成開發工具,主要作用為運行WebDriverAgent文件到手機中
下載:appStore搜索xcode
運行依賴:開發者賬號
 
xcode設置:
前提:將真機使用數據線連接上mac電腦
測試運行WebDriverAgentRunner到手機
如果失敗,排查思路:
①在xcode中點擊Test后,第一次將WebdriverRunner時,手機需要信任該項目(設置->通用->
設備管理)
②在手機中啟用UI自動化(設置->開發者->EnableUIAutomation)
③如果有其他異常,根據異常提示信息自行參考百度或訪問
https://github.com/appium/appium/blob/master/docs/en/drivers/ios-xcuitest-real-devices.md
查閱相關解決方案
 
xcode需要的操作:
a.添加開發者賬號,普通apple ID即可
b.配置WebDriverAgent(Team、Product Bundle Identifier)
c.測試運行WebDriverAgentRunner到手機

Airtest-實戰iOS真機(連接設備)

1、連接真機注意事項
(1)在xcode中點擊Test前, 檢查項目默認終端是否選擇真機設備。
(2)點擊在xcode中Test之后, 要查看控制信息, 如果控制台沒任何信息輸出,可以等待或者多Test幾次, 直到控制台輸出啟動相關信息
(3)xcode配置iOS-T agent只需第一次配置,之后使用無需在單獨配置, 切莫亂修改參數;
(4)真機設備中, 要開啟自動化測試和信任iOS-T agent項目
 
2、連接真機步驟
(1)將真機使用數據線連接電腦
(2)啟動xcode並打開配置好的iOS-T agent項目(菜單-Product->Test啟動自動化服務程序)
(3)打開終端運行:i proxy 81008100(啟動端口映射服務程序)
(4)啟動Air Test IDE工具(選擇【連接ios設備】->點擊【connect】)

Airtest-實戰iOS真機(釘釘登錄、退出)

案例總結:
1、API使用方法和安卓沒有區別
2、真機速度快,輸入用戶名和密碼時需要暫停一會
3、ISO和安卓區別在於環境搭建

其他參考博文

1、Airtest接口功能介紹和示例總結
 
 
2、Airtest提高截圖腳本兼容性的經驗總結
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM