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