Airtest自動(dòng)化測試超級(jí)詳細(xì)教程

Airtest自動(dòng)化測試

1. 安裝AirtestIDE

AirtestIDE下載地址。我下載的是AirtestIDE_2019-09-10_py3_Mac10-12.dmg。下載完成之后,直接安裝即可。

2. 設(shè)備連接

2.1 部署iOS-Tagent

iOS-Tagent下載地址

 git clone git@github.com:AirtestProject/iOS-Tagent.git
 把手機(jī)連接到電腦上然后 打開Xcode,  product -> Scheme -> WebDriverAgentRunner  如圖
1.png
然后點(diǎn)擊  product -> Test  當(dāng)出現(xiàn)如圖的情況,說明iOS-Tagent環(huán)境部署成功
 (我自己本地部署后的服務(wù)器地址是: http://172.20.10.7:8100)
2.png

2.2 設(shè)置代理

iproxy 可以把iPhone端口映射到電腦端口,那么就可以通過訪問電腦的端口訪問到手機(jī)的端口了

 brew install libimobiledevice    // 通過 Homebrew 安裝iproxy

 iproxy 8100 8100    // 運(yùn)行iproxy,將手機(jī)的8100端口,映射到電腦的8100端口上。這樣我們就能通過訪問電腦的8100端口來訪問到手機(jī)了 (我運(yùn)行部署的環(huán)境是8100,所以寫的8100)

啟動(dòng)成功后,可以試著在瀏覽器訪問 http://172.20.10.7:8100/status ,如果訪問成功并且可以看到一些json格式的手機(jī)信息,即表示啟動(dòng)成功。如圖所示:

3.png

此時(shí),訪問 http://172.20.10.7:8100/inspector 可以看到iPhone屏幕投影在瀏覽器上 如圖

4.png

2.3 AirtestIDE與iPhone連接

通過ip方式連接iPhone,實(shí)時(shí)刷新界面,可進(jìn)行UI測試。在AirtestIDE的iOS地址欄填入地址 http://172.20.10.7:8100,點(diǎn)擊 “connect” 連接設(shè)備,開始編寫你的Airtest測試腳本了。如圖所示

5.png

注意: Xcode中的iOS Simulator模擬器部署過程和真機(jī)一樣,但是可以省略步驟2.2 設(shè)置代理,不需要另外執(zhí)行proxy

3. 腳本編寫

3.1 Airtest圖像編寫腳本 例如:使用 touch 操作,選擇touch 按鈕 如圖

7.png

具體詳情 可以參考 Airtest腳本編寫。

3.2 Poco編寫腳本 如圖

8.png
9.png

具體詳情 可以參考 Poco腳本錄編寫。

4. 運(yùn)行腳本

4.1 使用AirtestIDE運(yùn)行腳本

單擊AirtestIDE的 Run Script 按鈕即可 如圖

10.png

4.2 使用AirtestIDE命令行運(yùn)行

將運(yùn)行腳本時(shí) AirtestIDE 生成的這段命令行代碼(如下圖圈出來的部分)復(fù)制到你的命令行終端里,回車運(yùn)行就可以了

11.png

注意: 這種使用AirtestIDE命令行來運(yùn)行腳本的方式,是一個(gè)簡單快速的方式,假如想要批量執(zhí)行、同時(shí)執(zhí)行的話,可能會(huì)遇到效率不佳的問題。

4.3 使用本地python環(huán)境運(yùn)行腳本

部署Python環(huán)境

Mac 系統(tǒng)自帶Python 環(huán)境,環(huán)境支撐Python(2.7或<=3.6),我們更推薦使用 Python3

brew install python3

Airtest安裝

pip install airtest

Poco安裝

pip install pocoui  //請注意庫的名稱為 pocoui,不要填錯(cuò)

環(huán)境部署完成后,我們就能夠脫離AirtestIDE,在不同的宿主機(jī)器和被測平臺(tái)上運(yùn)行腳本了。使用python命令行運(yùn)行腳本

airtest run untitled.air --device ios:///手機(jī)設(shè)備號(hào) --log log/
python -m airtest run untitled.air --device Android:///手機(jī)設(shè)備號(hào) --log log/

這兩個(gè)命令行的效果是相同的,我們用airtest運(yùn)行了一個(gè)叫做 untitled.air 的腳本,傳入了 --device 和 --log 兩個(gè)參數(shù),分別是我們的手機(jī)設(shè)備和log輸出目錄。

5. 生成報(bào)告

5.1 在IDE里點(diǎn)擊生成報(bào)告按鈕來生成報(bào)告

在運(yùn)行腳本后,可以立即在log窗口中看到當(dāng)前腳本執(zhí)行成功還是失敗,然而不能夠看到更加詳細(xì)直觀的執(zhí)行結(jié)果。在AirtestIDE中,可以點(diǎn)擊上側(cè)圖標(biāo)菜單的最后那個(gè)“查看報(bào)告”的按鈕,快捷鍵為Ctrl+L,稍后片刻將會(huì)自動(dòng)使用默認(rèn)瀏覽器打開結(jié)果報(bào)告頁面。如圖所示:

12.png

另外,我們可以在AirtestIDE上右鍵點(diǎn)擊腳本標(biāo)題,選擇“打開報(bào)告”,來打開log所在的文件夾。


13.png

5.2 使用命令行來生成報(bào)告

我們的腳本運(yùn)行過程,與報(bào)告生成過程是獨(dú)立的兩個(gè)步驟,所以我們可以先用airtest run 指令來運(yùn)行腳本:

# 用airtest運(yùn)行了untitled.air這個(gè)腳本
# airtest run 后面接的是腳本文件的路徑
airtest run untitled.air

注意: 如果airtest run 指令沒有指定--log參數(shù),將不保存log內(nèi)容和截圖,且命令行會(huì)提示do not save log;如果指定--log log/, 將把生成的log內(nèi)容放到當(dāng)前命令行的執(zhí)行目錄里;如果指定了--log +某個(gè)指定目錄 參數(shù),log內(nèi)容與截圖將會(huì)放在指定目錄里。

然后,我們可以運(yùn)行 airtest report 指令來生成一份HTML格式的報(bào)告:

# 最簡單的命令行,log文件與腳本文件在同一文件夾里
# 運(yùn)行以下指令,在當(dāng)前目錄生成一個(gè)log.html
airtest report untitled.air log.html

具體詳情 可以參考 Airtest_generate-html-report

*注意:在有些瀏覽器上打開報(bào)告可能出現(xiàn)白屏現(xiàn)象,這是由于官方對(duì)有些瀏覽器沒有適配全,建議用最新版本的chrome去打開。

6. 常見的問題

6.1 如何在模擬器安裝應(yīng)用

把xx.ipa 改成xx.zip,解壓得到xx.app
打開模擬器, 在終端運(yùn)行 xcrun simctl install booted xx.app
tips: 不可以把真機(jī) app 包安裝在iOS模擬器上,真機(jī)的app是基于arm的,而模擬器是運(yùn)行在 X86 指令集上的,強(qiáng)行安裝會(huì)導(dǎo)致閃退的問題。

6.2 如何進(jìn)行iOS多機(jī)測試

 目前暫未開放iOS多機(jī)測試功能

6.3 Api 支持狀況

iOS設(shè)備與Android設(shè)備有很大的不同,以下通用的 Airtest 的 API 在iOS上都是支持的:

start_app: OK
stop_app: OK
snapshot: OK
home: OK
touch: OK
swipe: OK
text: OK
wait: OK
exists: OK
find_all: OK
assert_exists: OK
assert_not_exists: OK
但是以下API是不支持的: - wake: 暫未支持 (考慮用home方法替代) - keyevent: 只支持home 事件 - clear_app: 暫未支持 - install: 暫未支持 - uninstall: 暫不支持

6.4 有些瀏覽器打開生成的報(bào)告空白

這是由于官方對(duì)有些瀏覽器沒有適配全,建議用最新版本的chrome去打開。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容