基礎(chǔ)功能
Airtest輔助窗(左上):這里主要是用來生成airtest框架中的代碼的。
Poco輔助窗(左下):這個主要是用來抓取元素信息的,類似于Chrome F12查看Web元素、Appium Inspector查看App元素,并且可以生成Poco框架代碼。
腳本編輯窗(中上):用來編寫自動化代碼,和所有IDE的相關(guān)功能類似。
Log查看窗(中下):代碼不運行的時候用來顯示Poco輔助窗選定元素后的所有信息;代碼運行后顯示程序運行時代碼。
設(shè)備窗(右側(cè)):連接設(shè)備,如已連接則同步顯示設(shè)備畫面。
一、設(shè)備窗
安卓:
插入手機后,設(shè)備列表會自動刷新,顯示PC上的設(shè)備。點最右側(cè)的箭頭,可以選擇連接參數(shù)(后面文章會詳細(xì)介紹)。
如果設(shè)備列表沒有自動刷新,可以點‘刷新ADB’手動刷新。
如果ADB卡死等情況,可以點‘重啟ADB’,對應(yīng)adb命令adb kill-server + adb start-server
如果手機是插在服務(wù)器上,不在本機,可以通過‘遠(yuǎn)程設(shè)備連接’(后面文章會詳細(xì)介紹)
Windows&iOS
同樣的,如果是Windows上的應(yīng)用或蘋果手機,則可分別在下面連接(后面文章會詳細(xì)介紹)
看一下連接設(shè)備以后的樣子,會實時顯示手機屏幕,并且可以點擊、滑動操作。
最下面依次是:菜單鍵、Home鍵、返回鍵、電源鍵
最上面的工具圖標(biāo),點擊可彈出設(shè)備窗菜單:
控件面板:點擊會切換顯示設(shè)備列表,我們可以繼續(xù)連接第2臺手機,airtest是可以同時連接并操作多臺手機的。切到設(shè)備列表后,再點工具按鈕,可以切回手機投屏顯示。
斷開當(dāng)前設(shè)備:點擊后會斷開與該設(shè)備的連接。
顯示Android助手:點擊打開助手,里面是一些常用adb命令的界面化操作(后面文章會詳細(xì)介紹)
二、Airtest輔助窗
touch:圖片識別點擊操作,鼠標(biāo)指向touch按鈕后會提示具體的使用方法。使用方法:點擊‘touch’按鈕,在手機屏幕上拖動選取點擊的圖片,在代碼編輯窗會自動生成代碼。
wait:等待圖片出現(xiàn)。同touch一樣,在屏幕上選擇圖片。
swipe:滑動操作。使用方法:點擊‘swipe’按鈕,在手機屏幕上拖動選取要識別的圖片,選擇完后,在向要滑動的地方點擊一下。
swipe代碼執(zhí)行時會找到Git圖片,向下滑動。
exists:判斷圖片是否存在,返回True或False。使用方法同touch。
text:輸入文字。
keyevent:模擬按鍵,如HOME鍵,返回鍵,菜單鍵
snapshot:截圖
sleep:等待
assert_exists:斷言圖片存在。使用方法同touch。
assert_not_exists:斷言圖片不存在。使用方法同touch。
assert_equal:斷言相等
assert_not_equal:斷言不相等
圖片模板生成:點擊有小剪刀的按鈕,再去拖選圖片,就可以生成一個圖片模板對象,就是touch語句中嵌套使用的那個圖片模板對象。
錄制:點擊后,去投屏上操作,可實時生成airtest代碼。不推薦使用,自動生成截取的圖片不好用。
三、Poco輔助窗
我們以Unity游戲App為例,在下拉框中選擇Unity。
App下載地址:
http://top.gdl.netease.com/poco-res/poco-demo-unity-game-android.zip
此時腳本編輯區(qū)會提示是否插入Poco初始化代碼,我們點Yes。
選模式后,airtestIDE會拉取元素樹(每過幾秒都會拉取最新元素),我們單擊某個元素,Log查看窗會顯示該元素詳細(xì)信息,投屏?xí)吡了x元素。
模式下拉框下面的搜索框,可以按元素name過濾。
雙擊元素或右擊元素選擇‘UI path-code’,會自動生成元素對象代碼。
模式下拉框右側(cè)依次是凍結(jié)按鈕、檢視按鈕、錄制按鈕:
凍結(jié):點擊后,投屏?xí)鼋Y(jié),元素樹也不再更新。因為游戲很多都是動畫的,定住當(dāng)前畫面以方便查看當(dāng)下元素信息。
檢視:點擊后,鼠標(biāo)可在投屏實時查看元素信息
此時在投屏上右擊,可以列出當(dāng)前點上的所有元素。很多時候元素是疊加在一起的,無法選擇,就可以通過此方法選取。
在投屏上右擊,也可快速切換普通/檢視/錄制功能。
3.1UI樹常見問題:
3.1.1為什么我選擇了Poco模式后,沒有成功刷出UI樹
目前除了Android原生App無需接入SDK即可直接使用之外,其余引擎都需要事先 接入SDK 才能獲取到UI結(jié)構(gòu)信息(游戲沒有事先接入SDK是無法直接看到UI樹的)
3.1.2為什么接入了SDK、使用了原生App依然看不到UI樹
在Poco初始化時,會向手機中安裝相關(guān)的apk,請務(wù)必保證手機允許了相關(guān)apk的安裝。部分型號的手機需要在設(shè)置中開啟“允許通過ADB安裝應(yīng)用”等相應(yīng)選項才能進行安裝。
部分廠商的手機需要額外的設(shè)置,例如需要手工在輸入法選項中,將Yosemite輸入法設(shè)置為默認(rèn),詳情請參考:
https://airtest.doc.io.netease.com/IDEdocs/device_connection/2_android_faq/#id7
3.1.3UI樹在一段時間后沒有正確刷新
可以嘗試先將Poco模式選項的下拉菜單改為 Stop,再重新選擇你所需要的模式,例如 Android, IDE將重新建立與手機的Poco通信連接。
有時候也可能因為手機內(nèi)存不足,手機自動將后臺的pocoservice進程關(guān)閉了,導(dǎo)致連接斷開,這種情況建議嘗試換一臺配置更好的手機重試。
四、腳本編輯窗
在這里編寫代碼,沒啥好說的。說下右擊后的菜單:
撤銷、重復(fù)、復(fù)制、粘貼沒啥好說的。
只運行選中代碼:一個腳本假如你寫了100行,運行時因為第90行代碼寫錯了,運行失敗。你修改第90行后,如果從頭開始運行,太浪費時間,此時你可以選中最后10行,點‘只運行選中代碼’,就可以只運行最后10行代碼了,是調(diào)試的好工具。
圖片/代碼模式切換:通過IDE生成的圖片相關(guān)的代碼,為了直觀都是顯示的圖片。但當(dāng)你要修改代碼或在Pycharm中編寫代碼時,就要用到代碼模式了。
下面再來看看代碼窗的菜單:
點擊+號,是新建腳本
點下拉箭頭,依次是:
打開當(dāng)前項目目錄
打開報告文件目錄
導(dǎo)出報告(導(dǎo)出后可發(fā)給別人)
壓縮當(dāng)前腳本.zip
清理多余圖片(錄制生成的圖片相關(guān)的腳本,代碼刪除后,圖片就沒用了)
文件異常恢復(fù)
五、Log查看窗
顯示log的地方,重點說2個功能。
1.每次運行腳本,log的最開始都會自動生成運行命令。這個命令可以脫離IDE放在命令行運行。
2.點右側(cè)過濾按鈕,可以按級別過濾日志。
六、文件菜單-對應(yīng)工具欄的前4個按鈕:新建、打開、保存、另存為
6.1新建
點擊后會讓你選建.air后綴的腳本還是.py后綴的腳本。這里就先都選建.air后綴的腳本,.py后綴需要熟練Python和airtest之后再用(后期會有專門文章)。
新建腳本會初始化代碼幫助你從api中引入了airtest的各個接口以及自動初始化設(shè)備。
讓我們打開剛才新建腳本的文件夾,可以看到實際上.air腳本文件是一個普通的文件夾,里面附帶了一個同名的.py文件,AirtestIDE在執(zhí)行腳本時,實際上執(zhí)行的是里面的.py文件。也就是說,Airtest腳本雖然自帶一個后綴名,然而本質(zhì)上依然是Python腳本,遵循的是Python語法,我們可以根據(jù)實際需要自由地import其他Python第三方庫。
airtest設(shè)計.air后綴的文件夾,初衷應(yīng)該是方便新手傻瓜化操作,.air后綴的文件夾就相當(dāng)于一個項目文件夾,里面除了有同名的.py文件外,通過IDE截取的圖像和運行的日志都會放在這個文件夾。但這個.air后綴卻給Pycharm中編寫Python代碼帶來一定困擾。
值得注意的是,.air文件夾中必須要有同名的.py文件,否則在命令行執(zhí)行airtest run test.air 這樣的運行指令時會導(dǎo)致失敗。
6.1打開
打開一個已存在的.air腳本。
6.2保存
保存當(dāng)前窗口腳本。
6.3另存為
將腳本保存到其他路徑。默認(rèn)腳本創(chuàng)建后是在AirtestIDE的安裝目錄下,后面如果卸載IDE或者更新IDE,都會刪除安裝目錄下的文件。所以從一開始就養(yǎng)成把腳本保存在單獨的工程路徑下,以防丟失。
七、運行菜單-對應(yīng)工具欄后3個按鈕:運行、停止運行、打開HTML報告
7.1運行
運行當(dāng)前腳本。
7.2停止運行
停止運行中的腳本
7.3打開HTML報告
腳本運行完后,點擊報告,會打開HTML報告。
7.4Firebase菜單
是將腳本打包成APK,在手機運行。此功能目前(2021.4.4)官方是棄養(yǎng)狀態(tài),不可使用。
八、窗口菜單
AirtestIDE的主界面是由多個可dock窗口組合而成的,我們可以按照自己的開發(fā)習(xí)慣和實際需要進行靈活拖拽布局,并可以通過下拉菜單"窗口"-"恢復(fù)默認(rèn)布局"將內(nèi)部布局恢復(fù)為默認(rèn)狀態(tài)。
布局信息會在軟件關(guān)閉時會自動保存,下次重新啟動軟件/下載新版本軟件使用時,之前的布局記錄會自動延續(xù)。
九、選項-設(shè)置
十、Device欄
10.1實時坐標(biāo)顯示:可以實時在手機屏幕畫面上顯示出鼠標(biāo)位置的坐標(biāo)(絕對坐標(biāo)),方便大家獲取坐標(biāo)。此時點擊鼠標(biāo)右鍵 ,還可以自動將當(dāng)前坐標(biāo)信息復(fù)制到剪貼板中,在代碼里只需要直接粘貼即可插入點擊位置的坐標(biāo)。
10.2相對坐標(biāo):該選項依賴于“實時坐標(biāo)顯示”,勾選后,將會以(0, 0) 到 (1, 1) 為范圍顯示出相對坐標(biāo)。使用相對坐標(biāo)可以避免跨分辨率的操作點超出屏幕的問題,使坐標(biāo)操作兼容性更好。
什么是相對坐標(biāo),舉個例子,屏幕長寬是2000x2000,那么[1800,1800]這個絕對坐標(biāo)點的相對坐標(biāo)就是[1800/2000,1800/2000],即[0.9,0.9]。[1800,1800]這個點在屏幕長寬1000x1000上是不存在的,但你用相對坐標(biāo)[0.9,0.9],指的是[900,900]這個點,這樣,不同大小分辨率的屏幕就都可以兼容了。
10.3Windows窗口無嵌入連接:由于部分windows應(yīng)用在默認(rèn)嵌入方案中可能會有無法嵌入、嵌入后無法對應(yīng)用進行操作、黑屏等問題,因此我們提供了一種備用嵌入方案。
假如勾選了該選項,在嵌入windows窗口時,請使用windows的顯示桌面,將桌面上的應(yīng)用全部最小化,然后僅將AirtestIDE和被測應(yīng)用恢復(fù)到桌面中。點擊AirtestIDE的 選定窗口 按鈕,使用綠色框?qū)⒈粶y應(yīng)用框選后,IDE的設(shè)備面板將消失,接下來就可以正常地進行錄制操作。
10.4手機設(shè)備顯示分辨率:當(dāng)已經(jīng)連接好Android手機時,AirtestIDE會在Device窗口顯示出手機實時同步畫面。如果覺得清晰度較低,可以修改該值,數(shù)字越大,清晰度越高。默認(rèn)為800,取值范圍為300-2000之間。
如果還是覺得手機實時畫面清晰度不夠高,可以在連接手機之前,在下拉菜單中勾選 Use Javacap 模式(不勾選的情況下,默認(rèn)使用Minicap連接手機),再進行連接。在Javacap模式下,能夠看到清晰度更高的手機畫面,但是延遲會比默認(rèn)的Minicap模式要稍微高一些。
十一、Editor欄
11.1兼容模式:有些少部分用戶由于顯卡兼容性問題,可能在啟動AirtestIDE時,不能看到腳本編輯窗口和log窗口中的文字,或者是啟動后會閃退,但是通過雙擊文件夾中的兼容性模式啟動.bat腳本能夠正常啟動AirtestIDE。
默認(rèn)情況下會選擇default模式,如果啟動有問題的用戶,可以嘗試選中下拉菜單中的另外三個選項,并且重啟AirtestIDE,查看接下來是否能正常顯示腳本編輯窗口和log查看窗口。如果能夠生效,未來啟動AirtestIDE時都將會以這個配置項來啟動,無需每次都手工雙擊兼容性模式啟動.bat腳本來啟動AirtestIDE了。
11.2字體大小:可以調(diào)節(jié)編輯窗口和Log窗口內(nèi)的文字大小,默認(rèn)是14px。在AirtestIDE中,還可以通過按住ctrl+鼠標(biāo)滾輪來實現(xiàn)改變文字大小。
11.3編輯器主題:我覺得默認(rèn)的主題就挺好。
11.4自動補全:打開此選項后,可以在AirtestIDE中編輯代碼時,享受到airtest和poco庫的代碼自動補全提示。但我的機器打開后會卡。
十二、Airtest欄
12.1自定義launcher文件路徑:這個是airtest的高級功能:啟動器(后期會有專門文章介紹)。新手不要改這個。
12.2默認(rèn)log存放路徑:用于指定在AirtestIDE中運行腳本時的log目錄,IDE將會把產(chǎn)生的log文件、截圖數(shù)據(jù)默認(rèn)放置在這個目錄下。
點擊重置按鈕將會把log目錄設(shè)置為系統(tǒng)默認(rèn)的temp目錄,點擊清理按鈕將會自動幫忙清空該目錄下的文件,釋放硬盤空間,請操作前確認(rèn)好沒有需要保留的重要log文件。
12.3自定義Python.exe路徑:不了解Python環(huán)境的話不要修改。AirtestIDE允許使用本地的python.exe來跑在AirtestIDE里寫好的腳本。由于AirtestIDE內(nèi)置了一個python環(huán)境,假如你希望能夠使用自己的本地python環(huán)境(可以跑一些本地安裝了的第三方庫,可以讓你使用本地的python2環(huán)境等等),可以通過設(shè)置這個選項來改變運行腳本默認(rèn)使用的python.exe。
點擊打開可以打開文件選擇窗口,請務(wù)必選擇一個本地安裝的python.exe路徑。點擊重置將會將填寫內(nèi)容清空。
在mac系統(tǒng)下,需要設(shè)置python可執(zhí)行文件路徑,如果使用的是系統(tǒng)python,使用which python指令來獲取python可執(zhí)行文件所在路徑(如果是python3,需要使用which python3):
which python3
/Library/Frameworks/Python.framework/Version/3.6/bin/python3
將該路徑填寫到AirtestIDE的設(shè)置窗口即可,請注意填寫的是bin/目錄下的可執(zhí)行文件,而不是python所在目錄。
假如使用了虛擬環(huán)境,就需要填寫虛擬環(huán)境目錄下的python可執(zhí)行文件路徑了,例如在mac系統(tǒng)中可能是
/Users/username/.virtualenvs/your_env/bin/python3
注意:
如果希望使用本地Python環(huán)境運行腳本,需要事先在本地環(huán)境通過pip安裝airtest和pocoui包。
AirtestIDE設(shè)置了本地的python.exe路徑后,會默認(rèn)使用 AirtestIDE/sample/custom_launcher.py 來啟動腳本,如果使用了自己的launcher.py,請在AirtestIDE中設(shè)置自己的launcher.py的腳本路徑。
十三、Poco欄
13.1刷新間隔:上期講的Poco檢視器,會定時去拉取手機上最新的元素樹,在這里可以設(shè)定間隔時間。
13.2Windows窗口區(qū)域位置:在嵌入了Windows游戲窗口后,如果想要使用Poco來查看界面元素,可以點該項后面的按鈕來設(shè)置窗口位置,這是為了能夠在Windows窗口上顯示poco元素標(biāo)記用的,不設(shè)置不會對腳本運行產(chǎn)生任何影響。
13.3采用渲染分辨率:在一些不支持全面屏手機的app,畫面不能充滿整個屏幕的時候,出現(xiàn)黑邊,poco定位發(fā)生偏移。如下圖高亮與實際按鈕相差一些:
勾選采用渲染分辨率,然后輸入豎屏模式下的渲染分辨率,點擊OK即可. 渲染分辨率為用逗號隔開的四個數(shù)字,數(shù)字分別代表豎屏模式下的 offset_x, offset_y, offset_width, offset_heigt.
比如在 1080x2220 分辨率下的大魚來了,它在手機上會有兩個黑邊,上黑邊高度為 100px ,畫面高度為2020px ,下黑邊高度為 100px ,所以它的渲染分辨率則為(0 ,100 ,1080 ,2020)
十四、Selenium欄
可設(shè)置Chrome.exe的路徑,借此運行Selenium相關(guān)功能。
注意:如果您安裝了geckodriver,并在path環(huán)境變量中配置了它,并選中“使用Firefox而不是Chrome”復(fù)選框,則不需要設(shè)置Chrome路徑。強烈建議您改用Chrome因為Firefox瀏覽器不支持錄制功能。
AirtestIDE高級功能
一、圖片編輯器
雙擊代碼編輯區(qū)里的圖片,就可以打開該圖片的編輯界面
Snapshot+Recognition
點擊左上按鈕,對當(dāng)前手機屏幕截圖,并識別圖片是否在截圖中,識別到后會紅圈標(biāo)出,并在左下顯示識別方法和可信度
filename
可以在這里給圖片改名,方便閱讀和維護
threshold
識別閾值,浮點類型,范圍是[0.0, 1.0],默認(rèn)0.7。也就是當(dāng)識別可信度=>0.7時就認(rèn)為是匹配的。
target_pos
要操作的位置點,整型,范圍是[1, 9],默認(rèn)是5即中心點,具體9個點分別代表的位置看圖中數(shù)字所示。
比如我們設(shè)置為9后,切換成代碼模式,其代碼相應(yīng)變?yōu)?/p>
Template(r"tpl1622030412465.png", target_pos=9, record_pos=(-0.044, -0.114), resolution=(1080, 2400))
# record_pos是圖片在你手機上的相對位置,resolution是你手機的分辨率。這兩個參數(shù)表示了圖片在你手機上的位置,airtest找圖時會優(yōu)先找這個區(qū)域,提高查找速度。
rgb
bool類型,設(shè)置在對識別結(jié)果進行可信度計算時是否使用rgb三通道,默認(rèn)為False(即采用灰度圖像進行可信度計算)。簡單理解,設(shè)為True,則不僅匹配圖的形,還匹配圖的顏色。
比如我們勾選rgb后,其代碼相應(yīng)變?yōu)?/p>
Template(r"tpl1622030412465.png", rgb=True, record_pos=(-0.044, -0.114), resolution=(1080, 2400))
右鍵菜單
在圖片編輯器的截圖上右擊,會出現(xiàn)菜單。
Device Snapshot:對屏幕截圖
Auto Recognition:在截圖上用默認(rèn)算法進行圖像識別
Recognition Methods-Template Recognition(auto resize):自動縮放大小識別
Recognition Methods-Template Recognition(no resize):不縮放識別
Recognition Methods-SIFT Recognition:使用SIFT算法識別
我圖片上的那個示例(未勾選rgb),用前面2種算法,找到的圖都是錯的,但用SIFT就正確找到了
二、手機助手
在IDE中連接好設(shè)備后,點擊設(shè)置窗右上角的工具按鈕,點’顯示Android助手‘,即可打開安卓助手界面。上面的功能其實就是對adb命令的封裝。
安裝apk
點擊左上的按鈕或是把APK拖過去,會打開安裝界面,點擊Install按鈕進行安裝
App列表
左下顯示手機中安裝的應(yīng)用的包名,可以按關(guān)鍵字篩選或只顯示第三方應(yīng)用。點擊某個包名,就可以對其進行相應(yīng)操作。
另外,點擊應(yīng)用列表中的某個包名,然后在鍵盤上使用 ctrl+c ,可以把包名復(fù)制到剪切板上,之后再使用 ctrl+v 就可以把包名粘貼到腳本編輯窗上,方便我們編寫操作應(yīng)用相關(guān)的腳本。
Common Features
open:輸入網(wǎng)址,點擊open,會在手機上用瀏覽器打開輸入的網(wǎng)址
input:輸入文字,點擊input,會把輸入的文字打在手機上(當(dāng)你需要從PC復(fù)制文本進手機時使用)
IME Manager:可以快速切換手機上的輸入法和airtest自帶輸入法。當(dāng)你使用Poco后,會自動調(diào)用airtest的輸入法yosemite,yosemite有自己的輸入法面板,就是一個小橫條,其目的是為了隱藏其他輸入法的面板,以方便自動輸入文字和查找元素。當(dāng)你運行后Poco的腳本,會自動將手機輸入法調(diào)成yosemite,導(dǎo)致你不能手動在手機上輸入文字,這時可以通過這個功能快速切換其他輸入法。
Quick Button:unlock解鎖屏幕,power手機電源鍵,snapshot手機截屏
volumn Setting:mute靜音,volumn_down音量-,volumn_up音量+
Current App
刷新:將當(dāng)前屏幕應(yīng)用的包名和Activity名顯示出來
stop:停止選中應(yīng)用(可通過刷新或左側(cè)列表選中應(yīng)用)
start:打開選中應(yīng)用(可通過刷新或左側(cè)列表選中應(yīng)用)
clear:將選中應(yīng)用數(shù)據(jù)清除(可通過刷新或左側(cè)列表選中應(yīng)用)
backup:備份應(yīng)用數(shù)據(jù)
uninstall:卸載選中應(yīng)用(可通過刷新或左側(cè)列表選中應(yīng)用)文章來源:http://www.zghlxwxcb.cn/news/detail-688576.html
Remote Debug
相當(dāng)于一個CMD命令行窗口,不怎么好用,官方也不太推薦,還是用你自己原來的就好。文章來源地址http://www.zghlxwxcb.cn/news/detail-688576.html
到了這里,關(guān)于Airtest:Windows桌面應(yīng)用自動化測試【AirtestIDE功能】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!