如何在Android手機上進行自動化測試

此文章來源於項目官方公衆號:AirtestProject
原文地址:airtest.doc.io.netease.com/tutorial/4_…
版權聲明:容許轉載,但轉載必須保留原連接html

前言

經過閱讀本節教程,你將瞭解到如下內容:java

  • 如何在腳本代碼中、運行腳本時指定手機
  • 如何填寫--device Android:///的內容
  • 如何便捷地在腳本中調用ADB指令或Android專屬接口

鏈接Android手機

在AirtestIDE裏鏈接Android手機

使用AirtestIDE對Android應用進行自動化測試時,第一步就須要鏈接Android設備。android

請查閱咱們的設備鏈接文檔裏的指引,安裝好驅動、打開手機裏的開發者選項容許USB調試選項後,用USB線連上手機並在AirtestIDE中嘗試鏈接。git

若是遇到了問題,請查閱Android鏈接常見問題文檔,根據裏面提供的自查步驟排查問題,有些品牌手機有專屬的選項須要另行開啓(例如小米、Vivo/Oppo),請一樣查閱對應品牌的注意事項來避免問題。github

設備的支持狀況

目前咱們支持市面上幾乎絕大多數Android手機Android模擬器(模擬器鏈接教程請查閱這裏),也可能支持少部分特殊的基於Android系統的硬件設備(這類設備因爲種類繁多,咱們沒法一一進行測試和支持,若是有兼容需求請聯繫開發組)。shell

在成功連上手機後,咱們就可以在AirtestIDE裏操做手機畫面,就像下圖中這樣,接下來就能夠開始用這臺手機編寫腳本了。api

image

設備鏈接的特殊選項設置

有少數非手機的Android設備(例如智能電視、智能後視鏡等),直接點擊connect按鈕不能鏈接,可是能夠嘗試經過勾選connect下拉菜單中的選項來嘗試鏈接。bash

例如,咱們的默認鏈接方式不支持模擬器,所以在鏈接模擬器時,須要先勾選Use Javacap選項(部分品牌模擬器還要同時勾選Use ADB orientation)。這裏connect下拉菜單的三個選項,是截屏、旋轉和點擊的三個備選方案,在默認方案沒法生效的時候,使用這3個備選方案可能就能夠支持設備了。app

注意:部分品牌手機不支持某個功能,可能僅僅只是由於選項沒有開啓,例如小米手機必需要開啓了容許模擬點擊纔可以在AirtestIDE中使用默認方式點擊手機(速度更快,效果更好)。若是是正常的手機設備,遇到問題時請儘可能先查閱文檔排查問題。這幾個備選方案的效率都比默認方案低,只有部分特殊的Android設備才須要使用到備選方案。工具

運行腳本時如何指定手機

當咱們在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參數,請參考2、Airtest介紹腳本入門-如何在Python腳本中使用Airtest裏的相關內容。

設備鏈接字符串如何編寫

在剛纔的命令行中使用的 --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
複製代碼

更多注意事項、其餘平臺範例、命令行中使用了&符號應該如何處理等,均可以在文檔關於設備字符串中找到。

多機協做

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()
複製代碼

Android平臺專屬功能與接口

2、Airtest介紹與腳本入門-平臺相關的接口一節中,咱們提到了每一個接口支持的平臺可能各不相同,而Android支持的接口是最全面、最豐富的。

基本上airtest.core.api中的接口(文檔地址),在Android平臺上均可以直接使用,例如:

# 清理某個應用數據
clear_app("org.cocos2d.blackjack")
# 啓動某個應用
start_app("org.cocos2d.blackjack")
# 傳入某個按鍵響應
keyevent("BACK")
複製代碼

Android設備接口

除了在airtest.core.api中提供的跨平臺接口以外,Android設備對象還有不少內置的接口能夠調用,咱們能夠在airtest.core.android.android module這個文檔中查閱到Android設備對象擁有的方法,而後像這樣調用:

dev = device()  # 獲取到當前設備的Android對象
print(dev.get_display_info())  # 查看當前設備的顯示信息
print(dev.list_app())  # 打印出當前安裝的app列表
複製代碼

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")
複製代碼

手機助手便捷功能

在使用AirtestIDE鏈接Android手機時,咱們還提供了一個簡單的手機助手功能,使用方法在這裏

連上Android手機後,點擊設備窗口右上角的工具圖標,在展開下拉菜單中,選擇Show assistant dialog 便可打開安卓手機助手。

image

在安卓手機助手中,咱們提供瞭如下幾種功能:

  • 手機應用的安裝/卸載/列表查看
  • 經常使用快捷操做:打開網址、輸入文本、切換輸入法、音量調節等
  • 手機Shell調試窗口

但願咱們的Android手機助手在你們使用Android手機時,起到良好的輔助做用,若是有BUG或者功能建議,請反饋至Github

想查看更多教程和項目的相關信息,歡迎關注咱們項目的官方公衆號AirtestProject查看往期教程:

相關文章
相關標籤/搜索