?
在移動端 UI 自動化測試中,元素定位是繞不開的核心環節。無論是 Android 還是 iOS 應用,能否精準、高效地定位到界面元素,直接決定了自動化腳本的穩定性和可維護性。而 Appium Inspector 作為 Appium 生態中專門用于元素定位的工具,憑借其直觀的可視化界面和強大的元素分析能力,成為了測試工程師的得力助手。今天,我們就來深入聊聊 Appium Inspector 的使用方法,以及如何用它提升自動化測試效率。
一、什么是 Appium Inspector?
簡單來說,Appium Inspector 是一款用于查看移動端應用界面元素屬性、獲取元素定位表達式的可視化工具。它可以連接真實設備或模擬器,實時同步應用界面,并通過點擊界面元素的方式,自動解析出元素的 ID、class、xpath 等屬性,幫助測試工程師快速生成可用的定位表達式。
與傳統的命令行調試或代碼中硬編碼定位相比,Appium Inspector 的優勢在于:
- 可視化操作:所見即所得,直接在界面上點擊元素即可查看屬性,無需反復修改代碼調試;
- 多平臺支持:同時兼容 Android 和 iOS 系統,統一了不同平臺的元素定位流程;
- 定位方式豐富:支持 ID、class name、xpath、 accessibility id 等多種定位策略,并能自動生成對應表達式;
- 實時交互:可以在工具中直接對元素執行點擊、輸入等操作,驗證定位的有效性。
二、準備工作:環境搭建與配置
在使用 Appium Inspector 前,需要先完成基礎環境配置,確保工具能正常連接設備并獲取界面信息。
1. 基礎依賴安裝
Appium Server:Inspector 需要與 Appium Server 配合使用,需先安裝 Appium(推薦通過 npm 安裝:npm install -g appium);
移動端環境:
Android:安裝 Android SDK,配置ANDROID_HOME環境變量,確保adb命令可正常使用;
iOS:需在 Mac 環境下,安裝 Xcode 及 Command Line Tools,配置 iOS 開發環境;
設備 / 模擬器:準備一臺已開啟調試模式的 Android 設備(或模擬器),或 iOS 設備(需通過 Xcode 配置)。
2. 啟動 Appium Server
打開終端,輸入appium命令啟動服務,默認端口為 4723。啟動成功后會顯示類似如下信息:
3.安裝Appium Inspector
Appium Inspector是appium自帶的一個元素定位工具,可以通過以下鏈接進行安裝。
下載地址:https://github.com/appium/appium-inspector/releases
安裝后打開就是上圖的樣子
注意事項:
1.Appium Inspector 與 Appium Server 的版本兼容
Appium Inspector( Inspector )是 Appium 生態的一部分,其功能依賴 Appium Server 提供的接口,兩者版本需 “對應”:
- 若使用 Appium Server 2.x(目前主流版本),需搭配 Appium Inspector 2.x 及以上(推薦最新版,如 2023 年后的版本),因為 2.x 版本引入了新的驅動架構(如 UiAutomator2、XCUITest 驅動需單獨安裝),舊版 Inspector 可能不支持。
- 若使用 Appium Server 1.x(老舊版本,已逐步淘汰),需搭配 Appium Inspector 1.x,新版本 Inspector 可能無法識別 1.x Server 的接口格式。
查看版本方法:
- Appium Server:啟動后在日志或命令行輸入 appium --version 查看。
? ? ?
- Appium Inspector:打開后在 “關于” 或設置中查看版本號。
2.與測試設備系統版本的匹配
不同系統版本(尤其是 iOS)對 Inspector 的兼容性要求嚴格:
- Android:兼容性較強,只要 Inspector 支持對應版本的 UiAutomator2 驅動(通常隨 Appium Server 安裝)即可,無需嚴格匹配系統版本(如 Android 10-14 均可兼容最新 Inspector)。
- iOS:需特別注意,因為 Inspector 依賴 XCUITest 框架(蘋果官方測試框架),而 XCUITest 版本與 iOS 系統版本強綁定:
- 若測試 iOS 15 及以上,需使用 Appium Inspector 2.x + Appium Server 2.x + XCUITest 驅動最新版。
- 若測試老舊 iOS 設備(如 iOS 12 及以下),可能需要降低 Inspector 和 Server 版本(如 Appium 1.22.x + 對應舊版 Inspector)。
三、連接設備與應用:Desired Capabilities 配置
要讓 Inspector 連接到目標設備和應用,需要通過Desired Capabilities(期望能力)定義設備和應用的基本信息。這是一組鍵值對,用于告訴 Appium Server“要連接什么設備、啟動哪個應用”。
1. 常用 Capabilities 參數
平臺相關:
- platformName:設備平臺(Android或iOS);
- platformVersion:設備系統版本(如 Android 13、iOS 16.1);
- deviceName:設備名稱(Android 可通過adb devices查看,iOS 可在 Xcode 中查看);
應用相關:
- appPackage(Android):應用的包名(如微信的包名為com.tencent.mm);
- appActivity(Android):應用的啟動 Activity(如微信的啟動 Activity 為.ui.LauncherUI);
- app(通用):應用安裝包的本地路徑(適用于未安裝應用的情況,會自動安裝);
其他:
- noReset:是否保留應用狀態(true表示不重置,適合測試已登錄狀態);
- automationName:自動化引擎(Android 默認UiAutomator2,iOS 默認XCUITest)。
2. 在 Inspector 中配置 Capabilities
打開 Appium Inspector(可通過 Appium Desktop 啟動,或訪問Appium Inspector Web 版),在左側 “Desired Capabilities” 區域填入參數,例如 Android 應用的配置:
{"platformName": "Android","appium:automationName": "uiautomator2","appium:deviceName": "9b133dfd","appium:platformVersion": "10","appium:appPackage": "com.pczn.app","appium:appActivity": ".MainActivity","appium:noReset": true,"appium:autoGrantPermissions": true
}
配置完成后,點擊 “Start Session”,Inspector 會通過 Appium Server 連接設備并啟動應用,成功后將顯示應用的實時界面。
3.查看連接設備以及軟件的包名和活動名
- 有線設備連接
通過帶數據傳輸的USB線進行連接,隨后在命令行輸入以下命令
adb devices
- 無線連接
- 電腦和 Android 設備連接到同一 WiFi 網絡(確保在同一局域網內)。
- 設備已開啟開發者選項和USB 調試(在設置→開發者選項中開啟)。
- 電腦已安裝 ADB 工具,并配置好環境變量(確保
adb
命令可在任意目錄執行)。 - 查看需要連接設備的IP地址
adb connect 192.168.1.105:5555 # 替換為你的設備IP和端口
??
- 查看軟件的包名和活動名
adb shell dumpsys window | findstr "mCurrentFocus"
從輸出結果可以看到,當前設備前臺打開的應用信息如下:
-
appPackage(應用包名):
com.eg.android.AlipayGphone
這是支付寶(Alipay)的官方包名,通過包名可以確認當前打開的是支付寶應用。 -
appActivity(當前活動頁面):
com.eg.android.AlipayGphone.AlipayLogin
這表示當前顯示的是支付寶的登錄頁面(AlipayLogin
?清晰標識了頁面功能)。
如果需要用 Appium 操作當前打開的支付寶登錄頁,在 desiredCapabilities 中配置以下參數即可:
{"platformName": "Android","appium:automationName": "uiautomator2","appium:deviceName": "你的設備標識","appium:platformVersion": "系統版本","appium:appPackage": "com.eg.android.AlipayGphone","appium:appActivity": ".AlipayLogin", // 可簡寫為相對路徑 "appium:noReset": true,"appium:autoGrantPermissions": true
}
四、核心功能:元素定位與操作
連接成功后,Appium Inspector 的界面主要分為三部分:左側的可視化界面、中間的元素樹、右側的元素屬性面板。
1. 定位元素的 3 種方式
1.1 通過 ID 定位(最推薦,穩定性高)
原理:利用元素的?resource-id?屬性定位,這是 Android 應用開發中通常會設置的唯一標識(類似 HTML 中的?id)。
適用場景:元素有明確且唯一的?resource-id?時(如按鈕、輸入框等)。
操作示例:
- Appium Inspector 中:在元素詳情面板找到?resource-id(如?com.pczn.app:id/login_btn),直接選擇 “ID” 定位方式。
- 代碼中(Python 示例):
from appium.webdriver.common.appiumby import AppiumBy# 定位 ID 為 "com.pczn.app:id/login_btn" 的元素
login_button = driver.find_element(by=AppiumBy.ID, value="com.pczn.app:id/login_btn")
login_button.click() # 點擊該元素
1.2 通過 XPath 定位(靈活性最高,適用范圍廣)
原理:通過元素的層級結構、屬性(如文本、class、ID 等)組合定位,類似 XML 路徑查詢。
適用場景:元素無唯一 ID、需要通過相對位置或多個屬性篩選時(如列表項、動態生成的元素)。
- 常用 XPath 語法:
- 精確匹配文本://*[@text="登錄"](定位文本為 “登錄” 的元素)
- 匹配包含特定文本://*[contains(@text, "登錄")](定位文本包含 “登錄” 的元素)
- 結合 ID 和 class://android.widget.Button[@resource-id="com.pczn.app:id/login_btn"]
代碼示例(Python):
# 定位文本為“登錄”的按鈕
login_button = driver.find_element(by=AppiumBy.XPATH, value='//*[@text="登錄"]')
login_button.click()
1.3. 通過 Accessibility ID 定位(適用于無障礙設計的元素)
原理:利用元素的 content-desc 屬性(無障礙描述)定位,主要用于輔助功能,通常具有語義化含義。
- 適用場景:元素設置了 content-desc 且唯一時(如 “返回” 按鈕、“關閉” 圖標)。
- Appium Inspector 中:在元素詳情找到 content-desc(如 “返回主頁”),選擇 “Accessibility ID” 定位。
代碼中(Python 示例):
# 定位 content-desc 為“返回主頁”的元素
back_button = driver.find_element(by=AppiumBy.ACCESSIBILITY_ID, value="返回主頁")
back_button.click()
2. 生成定位表達式
選中元素后,右側面板的 “Selected Element” 區域會顯示多種定位策略的表達式,直接復制即可用于自動化腳本:
- id:優先推薦,如id("com.tencent.mm:id/btn_login");
- xpath:適合復雜場景,如//android.widget.Button[@text="登錄"];
- class name:需注意可能存在多個相同 class 的元素;
- accessibility id:適合支持無障礙標簽的元素(Android 的content-desc屬性)。
3. 實時操作元素
在右側 “Actions” 面板中,可以對選中的元素執行簡單操作,驗證定位是否有效:
- Click:模擬點擊;
- Send Keys:輸入文本(適用于輸入框);
- Clear:清空輸入框內容;
- Get Text:獲取元素文本,驗證顯示是否正確。
五、進階技巧:提升定位效率
1. 處理動態元素
部分應用的元素屬性(如resource-id)會隨版本更新變化,或包含隨機字符(id="btn_12345"),此時可通過以下方式定位:
用contains模糊匹配://*[contains(@resource-id, "btn_")];
結合多個屬性定位://android.widget.Button[@text="登錄" and@class="android.widget.Button"];
利用父節點或兄弟節點層級關系://*[@id="parent"]/android.widget.Button[2]。
2. 切換上下文(WebView/H5 頁面)
若應用包含 H5 頁面(如微信小程序、內嵌網頁),需先切換到 WebView 上下文:
在 Inspector 頂部的 “Context” 下拉框中,選擇包含WEBVIEW_前綴的上下文;
切換后,元素定位方式與網頁端一致(支持css selector等)。
3. 保存與加載會話
對于頻繁測試的應用,可通過 “Save Session” 保存當前配置,下次直接 “Load Session” 快速啟動,無需重復配置 Capabilities。
?