Airtest Project簡介
Airtest Project是網易出品的一款自動化解決方案,它適用于任意游戲引擎和應用的自動化測試,支持Android和Windows。它不需要依賴被測對象的源碼。
在2018年3月26號的Google開發者日上,Google也宣布了這款由網易開發的項目,因此很值得一試。
Airtest Project提供了一個自動化測試編輯器Airtest IDE,Airtest IDE使用了基于圖像識別的UI自動化測試框架—Airtest來進行控件定位;它同時集成了POCO框架,POCO框架是基于控件識別的UI自動化框架,支持主流游戲引擎:Cocos2d-x, Unity3d,支持Android原生應用。因此可以選擇是用圖像識別或者基于控件定位的方式來進行控件定位。
AirtestIDE安裝
AirtestIDE安裝方式很簡單,直接去Airtest Project官網進行下載即可,雙擊可執行的安裝文件按照提示完成安裝即可,Airtest Project官網如下:
[Airtest Project Home Page]??http://airtest.netease.com/index.html?
當前提供兩個平臺的安裝文件,WINDOWS和MAC。
安裝完啟動后是長這樣的:
AirTest IDE使用
連接Android手機
今天主要介紹下Android平臺的操作,Windows和iOS以后再詳細介紹。
手機通過USB將Android手機連接到PC上,并確認手機的USB調試模式已經打開。點擊上圖的右側窗口里的refresh ADB按鈕,就可以你連接的設備信息如下:
點擊connect就可以連接到設備并將設備投影到IDE里,如下所示:
錄制腳本
連接上手機后就可以使用IDE來進行腳本錄制與回放了,錄制方式分兩種,一種基于圖像識別的,另外一種基于控件定位的。下面分別通過兩種定位方式來錄制同一個場景。假設操作的入口是在微信小程序列表,列表里有肯德基的小程序(肯德基看到記得給我打下廣告費),現在錄制這樣的場景:
點擊肯德基進入其小程序
點擊開始點餐
點擊收藏的餐廳
圖像識別方式:
按照上面介紹的步驟連接上手機后,只有點擊IDE里Script Editor下的添加按鈕,創建一個腳本如下所示:
接著點擊Airtest Assiant下發的第二個錄制按鈕即可開始錄制,如下所示:
點擊右側的設備屏幕區域,完成上面描述的1~3步驟,操作完再次點擊錄制按鈕即可停止錄制,錄制完會自動生成腳本如下:
手動在肯德基小程序里回退下,并點擊右上角的關閉按鈕,回到小程序列表也,這時候如果要回放剛才的腳本的話只需要點擊如下的執行按鈕即可進行回放:
上面都是操作性的步驟,如果要進行校驗通過圖像識別該怎么做。假設現在要斷言點擊收藏的餐廳會出現立即登錄的按鈕,如下所示:
加入校驗的話可以點擊Airtest Assiant下的assert_exists,通過這個可以斷言某個圖片是否存在,點擊完后會提示選擇要校驗的區域,這時候只有選擇需要判斷的區域即可,選定完后會生成如下代碼:
再次退后到小程序列表也,回放下錄制的代碼,待執行完后點擊如下的按鈕查看測試報告:
測試報告長這樣的:
控件定位方式:
上面介紹了按圖像的定位方式,接著來介紹下按控件來定位的方式。圖像的話可用于不能用控件定位時的一種補充,基于控件體系的定位方式會比較精準,穩定性相對來說也會好一點,兩種定位方式結合起來幾乎可以無所不能了。那通過IDE如何使用基于控件的定位方式呢?
點擊Script ?Editor下的添加按鈕,再創建一個腳本文件。在Poco Assistant下方選擇Android,接著只要點擊IDE窗口左側的Poco Assistant下方最右側的錄制按鈕即可。如下所示:
在腳本編輯區域會出現如下提示,點擊Yes即可:
同樣假定操作的入口是在小程序的列表里,錄制上面的三個步驟,錄制的時候有時候定位方式不是很準確,可以通過點擊上圖中間的Poco Inspector按鈕,接著在Device Screen區域要查看控件信息的地方鼠標右鍵,接著雙擊需要查看的控件即可,雙擊完后改控件的信息就會列在Log Viewer里,如下所示:
通過上面的方式獲取到的定位方式比錄制的要精確,修改完后生成的代碼如下:
# -*- encoding=utf8 -*-
__author__="aaronyang"
frompoco.drivers.android.uiautomationimportAndroidUiautomationPoco
poco=AndroidUiautomationPoco(force_restart=False)
poco(text="肯德基+").click()
poco(name="開始點餐").click()
sleep(3)
poco(name="收藏的餐廳(0)").click()
那這種方式如何添加校驗點了,添加如下:
那這種方式如何添加校驗點了,添加如下:
# -*- encoding=utf8 -*-
__author__="aaronyang"
frompoco.drivers.android.uiautomationimportAndroidUiautomationPoco
poco=AndroidUiautomationPoco(force_restart=False)
poco(text="肯德基+").click()
poco(name="開始點餐").click()
sleep(3)
poco(name="收藏的餐廳(0)").click()
name=poco(name="立即登錄").get_name()
assert_equal(name,"立即登錄","立即登錄按鈕存在")
運行和查看報告的方式跟基于圖像的一樣,這里就不在一一介紹了。
基于圖像和基于控件在這篇文件里是分開介紹的,它們混合起來用會強大不少,如果基于控件定位的方式搞不定的會就把基于圖像的添加進來,這樣就方便不少,不會出現其他自動化工具對某一類型的控件不好定位的問題。
沒有太多編碼技巧或者討厭編碼的人也可以使用基于圖像識別的定位方式去錄制一些腳本解決實際工作中的一些重復的體力活。