轉載:https://airtest.doc.io.netease.com/tutorial/0_automated_testing/
4.1 前言
通過閱讀本節教程,你將了解到以下內容:
- 如何在腳本代碼中、運行腳本時指定手機
- 如何填寫
--device Android:///
的內容 - 如何便捷地在腳本中調用ADB指令或Android專屬接口
4.2 連接Android手機
4.2.1 在AirtestIDE里連接Android手機
使用AirtestIDE對Android應用進行自動化測試時,第一步就需要連接Android設備。
請查閱我們的設備連接文檔里的指引,安裝好驅動、打開手機里的開發者選項、允許USB調試選項后,用USB線連上手機並在AirtestIDE中嘗試連接。
如果遇到了問題,請查閱Android連接常見問題文檔,根據里面提供的自查步驟排查問題,有些品牌手機有專屬的選項需要另行開啟(例如小米、vivo/OPPO),請同樣查閱對應品牌的注意事項來避免問題。
4.2.2 設備的支持情況
目前我們支持市面上幾乎絕大多數Android手機、Android模擬器(模擬器連接教程請查閱這里),也可能支持少部分特殊的基於Android系統的硬件設備(這類設備由於種類繁多,我們無法一一進行測試和支持,如果有兼容需求請聯系開發組)。
在成功連上手機后,我們就能夠在AirtestIDE里操作手機畫面,就像下圖中這樣,接下來就可以開始用這台手機編寫腳本了。
4.2.3 設備連接的特殊選項設置
有少數非手機的Android設備(例如智能電視、智能后視鏡等),直接點擊connect
按鈕不能連接,但是可以嘗試通過勾選connect下拉菜單中的選項來嘗試連接。
例如,我們的默認連接方式不支持模擬器,因此在連接模擬器時,需要先勾選Use Javacap選項(部分品牌模擬器還要同時勾選Use ADB orientation)。這里connect下拉菜單的三個選項,是截屏、旋轉和點擊的三個備選方案,在默認方案無法生效的時候,使用這3個備選方案可能就可以支持設備了。
注意:部分品牌手機不支持某個功能,可能僅僅只是因為選項沒有開啟,例如小米手機必須要開啟了允許模擬點擊才能夠在AirtestIDE中使用默認方式點擊手機(速度更快,效果更好)。如果是正常的手機設備,遇到問題時請盡量先查閱文檔排查問題。這幾個備選方案的效率都比默認方案低,只有部分特殊的Android設備才需要使用到備選方案。
4.2.4 運行腳本時如何指定手機
當我們在AirtestIDE里連上手機並編寫完腳本,當點擊“運行腳本”按鈕時,默認會在運行時的命令行里使用當前已經在AirtestIDE里連接的手機,就像這樣:
"D:\AirtestIDE\AirtestIDE" runner "untitled.air" --device Android://127.0.0.1:5037/F8UDU16409004135 --log "D:\log"
其中--device Android://127.0.0.1:5037/F8UDU16409004135
就是當前使用的本地手機,它將我們這台設備號為“F8UDU16409004135”的手機名稱告訴Airtest,讓它明白我們需要使用這台手機。
我們也可以在命令行中不填寫具體的手機設備號,用--device Android:///
這樣的內容來表示在當前連接的一台Android設備上運行即可,無論它的設備號是什么。
如果在命令行中,完全不填寫--device
,默認將會不連任何設備來運行代碼,那么在運行到需要有設備才能跑的代碼時將會報錯(例如touch語句必須要連上設備才能運行)。
如果希望在腳本中通過代碼進行設備連接,可以使用connect_device接口,或是在auto_setup接口中傳入devices參數,請參考本文第二節《Airtest介紹腳本入門-如何在Python腳本中使用Airtest》里的相關內容。
4.2.5 設備連接字符串如何編寫
在剛才的命令行中使用的--device
參數,傳入的是一個設備字符串,以安卓設備為例,字串完整定義如下:
Android://<adbhost[localhost]>:<adbport[5037]>/<serialno>
其中,ADBHost是ADB server所在主機的IP,默認是本機127.0.0.1,ADB port默認是5037,serialno是Android手機的序列號。
這里提供一些常見的填寫范例供大家參考:
# 什么都不填寫,會默認取當前連接中的第一台手機 Android:/// # 連接本機默認端口連的一台設備號為79d03fa的手機 Android://127.0.0.1:5037/79d03fa # 用本機的adb連接一台adb connect過的遠程設備,注意10.254.60.1:5555其實是serialno Android://127.0.0.1:5037/10.254.60.1:5555 # 模擬器等特殊設備、使用了連接參數時: # 模擬器連接,勾選了Use javacap模式 Android://127.0.0.1:5037/127.0.0.1:7555?cap_method=JAVACAP # 所有的選項都勾選上之后連接的設備,用&&來連接多個參數字符串 Android://127.0.0.1:5037/79d03fa?cap_method=JAVACAP&&ori_method=ADBORI&&touch_method=ADBTOUCH
更多注意事項、其它平台范例、命令行中使用了&符號應該如何處理等,都可以在文檔關於設備字符串中找到。
4.2.6 多機協作
Airtest支持一個腳本中連上多台手機,但是需要注意的是,並不是能夠自動讓這一個腳本在多台手機上跑,而是能夠在腳本中使用這幾台手機,實現一些類似於多機協作的效果(例如讓兩台手機登錄同一個APP並相互“添加好友”)。
假如我們現在正在使用AirtestIDE編寫腳本,已經同時連上多台手機,在運行腳本的時候AirtestIDE將會自動在命令行中添加多個--device
參數,把當前連接的手機都告訴腳本,無需其它額外操作。
或者也可以直接在腳本里使用多個connect_device語句,分別傳入手機連接串信息即可:
from airtest.core.api import connect_device dev1 = connect_device("Android://127.0.0.1:5037/serialno1") # 連上第一台手機 dev2 = connect_device("Android://127.0.0.1:5037/serialno2") # 第二台手機
在連接多台手機后,我們能夠在Airtest的全局變量G.DEVICE_LIST中看到所有當前連接中的設備,可以使用set_current接口在多台設備之間切換。
print(G.DEVICE_LIST) # 此時設備列表為[dev1, dev2] # 傳入數字0切換當前操作的手機到第1台 set_current(0) # 切換當前操作的手機到序列號為serialno2的手機 set_current("serialno2") # 使用device()接口獲取當前連接中的設備Android對象 current_dev = device()
4.3 Android平台專屬功能與接口
在本文第二節《Airtest介紹與腳本入門-平台相關的接口》中,我們提到了每個接口支持的平台可能各不相同,而Android支持的接口是最全面、最豐富的。
基本上airtest.core.api中的接口(文檔地址),在Android平台上都可以直接使用,例如:
# 清理某個應用數據 clear_app("org.cocos2d.blackjack") # 啟動某個應用 start_app("org.cocos2d.blackjack") # 傳入某個按鍵響應 keyevent("BACK")
4.3.1 Android設備接口
除了在airtest.core.api
中提供的跨平台接口之外,Android設備對象還有很多內置的接口可以調用,我們可以在airtest.core.android.android module這個文檔中查閱到Android設備對象擁有的方法,然后像這樣調用:
dev = device() # 獲取到當前設備的Android對象 print(dev.get_display_info()) # 查看當前設備的顯示信息 print(dev.list_app()) # 打印出當前安裝的app列表
4.3.2 ADB指令調用
在Android設備的測試腳本中,有時候我們需要輸入一些ADB指令,如果在普通的Python腳本中想要調用ADB指令,也許需要用到subprocess等模塊單獨啟動進程運行命令行才能實現。
但是在Airtest腳本中,調用ADB指令是非常簡單的事情:
# 對當前設備執行指令 adb shell ls print(shell("ls")) # 對特定設備執行adb指令 dev = connect_device("Android:///device1") dev.shell("ls") # 切換到某台設備,執行adb指令 set_current(0) shell("ls")
4.3.3 手機助手便捷功能
在使用AirtestIDE連接Android手機時,我們還提供了一個簡單的手機助手功能,使用方法在這里。
在連上Android手機后,點擊設備窗口右上角的工具圖標,在展開下拉菜單中,選擇Show assistant dialog 即可打開安卓手機助手。
在安卓手機助手中,我們提供了以下幾種功能:
- 手機應用的安裝/卸載/列表查看
- 常用快捷操作:打開網址、輸入文本、切換輸入法、音量調節等
- 手機Shell調試窗口