引言 Airtest 是網(wǎng)易出品的一款基于圖像識別的自動化測試工具,主要應用在手機 APP 和游戲的測試。一旦使用了這個工具進行 APP 的自動化,你就會發(fā)現(xiàn)自動化測試原來是如此簡單?。? 連接手機 要...
引言
Airtest 是網(wǎng)易出品的一款基于圖像識別的自動化測試工具,主要應用在手機 APP 和游戲的測試。一旦使用了這個工具進行 APP 的自動化,你就會發(fā)現(xiàn)自動化測試原來是如此簡單??!
連接手機
要進行 APP 的自動化測試,首先要將手機連上 airtest。連接手機有幾種方法都可以實現(xiàn):
第一種:USB 線連接,當然要注意一下幾個步驟:
請先安裝手機對應品牌的官方驅(qū)動,確保能使用電腦對手機進行 USB 調(diào)試;確保已經(jīng)打開手機的“開發(fā)者選項”(如何打開,每個手機不一樣,可以根據(jù)自己的手機型號百度),并且打開“開發(fā)者選項”內(nèi)的“允許 USB 調(diào)試”開關(guān)。注意:部分手機還需要打開“允許模擬位置”、“允許未知來源安裝應用”,所以如果不成功可以把這兩個選項也勾選!‘
關(guān)閉電腦上的手機助手軟件和進程,使用 USB 線連接手機,手機上出現(xiàn)的“允許 USB 調(diào)試”的彈窗,點擊確認;點擊 airtest 鏈接面板中的“refresh ADB”按鈕,設(shè)備列表將會刷新,并顯示出該手機;點擊列表內(nèi)對應設(shè)備的“connect”按鈕,即可完成連接。第二種:IP+ 端口的連接。具體步驟如下:
已知 IP 和端口的遠程設(shè)備 ip:port,AirtestIDE 可以直接連接,點開設(shè)備窗內(nèi)的 遠程設(shè)備連接 按鈕將 adb connect ip:port 字段填入填充框內(nèi),點擊 連接 按鈕,遠程設(shè)備將出現(xiàn)在設(shè)備列表中,點擊 connect 按鈕。第三種:無線連接。
當手機與電腦處在同一個 wifi 下,即可嘗試無線連接手機了,其實也就是通過 adb 無線連接手機。但是這種方式受限于網(wǎng)絡(luò)連接的穩(wěn)定性,可能會出現(xiàn)連接不夠穩(wěn)定的情況。具體連接操作步驟如下:
確保手機開啟了 USB 調(diào)試選項,并先用 USB 線將手機和電腦連接起來在電腦端執(zhí)行命令 adb tcpip 5555 ,其中 5555 是端口號,可以根據(jù)自己的需求來指定,5555 是默認值獲取手機的 IP 地址,可以在 手機設(shè)置-關(guān)于手機-狀態(tài)信息-IP 地址 里找到,也可以執(zhí)行 adb ifconfig 來查看隨后可以拔掉 USB 線,在 AirtestIDE 的 遠程設(shè)備連接 處輸入 adb connect 手機ip:剛才填入的端口號5555 ,點擊連接,刷新 ADB 后就能在設(shè)備列表中看到連上的設(shè)備了如果因為網(wǎng)絡(luò)波動、重啟 ADB 等原因?qū)е逻B接斷開,重新執(zhí)行一次 adb connect ip:port 即可。常用 API
1、touch :點擊操作 包含的參數(shù):
v:點擊的圖片或者坐標
times:點擊次數(shù),默認 1 次
duration:按住時間,默認 0.01s
right_click: windows 有效 ,手機端無效2、text :輸入文本
包含的參數(shù):
text:輸入的文本
enter:完成輸入后自動執(zhí)行 enter 操作,默認為 True
search:完成輸入后強行執(zhí)行 search 操作,默認為 false3、wait:等待元素出現(xiàn),如果找到該這個 圖片就返回圖片中心點的坐標,如果不出現(xiàn)就拋出錯誤:TargetNotFoundError
包含的參數(shù):
v:點擊的圖片或者坐標
timeout:等到超時時間,默認 20s
interval:每次尋找的時間間隔,默認 0.5s
intervalfunc:圖片沒有找到就執(zhí)行后面的函數(shù),默認為 None4、sleep :暫停等待
包含的參數(shù):
secs:延遲時間,默認 1.0s5、assert_exist : 判斷圖片是否存在,如果存在就返回圖片的中心坐標,不存在就 raise AssertionError
包含的參數(shù):
v:圖片
msg:描述測試點,它將被記錄在報告中
return: 存在就返回圖片的中心坐標,不存在就 raise AssertionError6、assert_not_exist :判斷圖片是否不存在,如果存在就 raise AssertionError
包含的參數(shù):
v:圖片
msg:描述測試點,測試 報告中顯示7、assert_equal : 判斷第一個值和第二個值是否相等
包含的參數(shù):
first:第一個對比條目
second:第二個對比條目
msg:描述測試點,在測試報告中顯示8、assert_not_equal : 判斷第一個值和第二個值是否不相等
包含的參數(shù):
first:第一個對比條目
second:第二個對比條目
msg:描述測試點,在測試報告中顯示實戰(zhàn)練習
我們現(xiàn)在用以上這寫 API 來實現(xiàn)一個具體的需求用例:
需求: 登錄檸檬班 app,并判斷是否登錄成功;
步驟如下:
新建一個 air 腳本,默認導入的文件如下:連接上手機設(shè)備,就可以再 airtest 界面看到手機的鏡像界面:點擊 touch ,截圖“檸檬班”APP 圖標,啟動這個 APP,生成的腳本如下:點擊“我的檸檬”,點擊“點擊頭像進行登錄”,來到登錄頁面:在用戶名輸入框中輸入手機號碼,在密碼輸入框中輸入密碼,點擊登錄按鈕。注意:為了確保萬無一失,最好在輸入文本之前,先點擊輸入框,確認輸入的焦點。
所以先調(diào)用 touch API,再調(diào)用 text API。點擊 text API 就會彈出如下圖所示的文本輸入框,輸入你的手機號碼即可。同樣的步驟,輸入密碼;最后,點擊“登錄”按鈕。
判斷是否登錄成功。用 assert_exists API 來斷言是否登錄的用戶名和頭像是正確的,腳本如下:
運行后,查看測試報告檢查測試結(jié)果可以打開測試報告,查看運行結(jié)果和斷言的圖片如下圖所示: