Appium 是一個開源的移動應用自動化測試框架,用于測試原生應用(native)、混合應用(hybrid)和移動網頁應用(mobile web)。它支持 iOS、Android 和 Windows 平臺。
?https://www.bilibili.com/video/BV1R93szkEhi/?
App自動化測試:App測試Appium+UiAutomator2技巧、實戰項目
核心特點
-
跨平臺:同一套 API 可用于 iOS 和 Android
-
多語言支持:支持多種編程語言(Java, Python, Ruby, JavaScript, C#等)
-
開源免費:完全開源,無需授權費用
-
不依賴應用代碼:不需要修改或重新編譯應用
-
支持多種應用類型:原生、混合和移動網頁應用
工作原理
Appium 采用客戶端-服務器架構:
-
Appium 服務器:基于 Node.js 實現,負責與設備通信
-
客戶端庫:各種語言的客戶端庫(如 Python 的?
Appium-Python-Client
) -
底層驅動:
-
iOS: 使用 XCUITest(Apple 官方框架)
-
Android: 使用 UIAutomator2/Espresso(Google 官方框架)
-
基本使用流程
-
安裝 Appium 服務器(
npm install -g appium
) -
安裝客戶端庫(如 Python:?
pip install Appium-Python-Client
) -
編寫測試腳本
-
啟動 Appium 服務器
-
運行測試腳本
簡單 Python 示例
python
from appium import webdriverdesired_caps = {'platformName': 'Android','platformVersion': '11','deviceName': 'emulator-5554','app': '/path/to/your/app.apk','automationName': 'UiAutomator2' }driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)# 執行測試操作 element = driver.find_element_by_id("com.example:id/button") element.click()driver.quit()
主要功能
-
元素定位:支持 ID、XPath、類名等多種定位方式
-
手勢操作:點擊、滑動、拖拽、縮放等
-
上下文切換:在原生和 WebView 之間切換
-
設備控制:旋轉屏幕、返回鍵、主頁鍵等
-
并行測試:支持多設備同時測試
適用場景
-
移動應用 UI 自動化測試
-
回歸測試
-
兼容性測試
-
功能測試
-
自動化演示
Appium 是移動應用自動化測試的主流選擇之一,特別適合需要跨平臺支持的測試場景。
是app自動化測試用的嗎
是的,Appium?是專門用于?移動應用(App)自動化測試?的開源框架,支持?Android、iOS?和?Windows?平臺上的原生應用(Native App)、混合應用(Hybrid App)和移動網頁應用(Mobile Web App)的自動化測試。
Appium 的主要用途
-
UI 自動化測試
-
模擬用戶操作(點擊、滑動、輸入等)
-
驗證界面元素是否正確顯示
-
檢查交互邏輯是否符合預期
-
-
功能測試
-
測試登錄、注冊、支付等核心業務流程
-
驗證 API 與 UI 的交互是否正確
-
-
回歸測試
-
每次發布新版本時,自動運行測試用例,確保舊功能不受影響
-
-
兼容性測試
-
在不同設備、不同系統版本上運行測試,確保 App 兼容性
-
-
性能測試(結合其他工具)
-
監測 App 啟動時間、內存占用、CPU 使用率等
-
Appium 的核心優勢
??跨平臺:同一套代碼可測試?Android 和 iOS(減少維護成本)
??支持多種語言:Python、Java、JavaScript、Ruby、C# 等
??無需修改 App 代碼:直接測試已安裝的 App(無需重新編譯)
??支持真機和模擬器:可在真實設備或 Android 模擬器/iOS 模擬器上運行
??豐富的定位方式:支持 ID、XPath、Accessibility ID、Class Name 等
Appium 的典型工作流程
-
啟動 Appium 服務器(基于 Node.js)
-
編寫測試腳本(如 Python +?
Appium-Python-Client
) -
連接設備(真機/模擬器)
-
運行測試,生成報告
Python 示例(測試 Android App)
python
from appium import webdriver# 設備配置 desired_caps = {"platformName": "Android","platformVersion": "13","deviceName": "Pixel 6","app": "/path/to/your/app.apk","automationName": "UiAutomator2" }# 連接 Appium 服務器 driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)# 測試操作 search_box = driver.find_element("id", "com.example:id/search_box") search_box.send_keys("Hello Appium!") search_box.click()# 關閉會話 driver.quit()
Appium vs 其他移動自動化工具
工具 | 支持平臺 | 語言支持 | 是否需要源碼 | 適用場景 |
---|---|---|---|---|
Appium | Android, iOS | Python, Java, JS, C# | ? 不需要 | 跨平臺 UI 自動化 |
Espresso (Android) | Android | Java, Kotlin | ? 需要 | Android 原生測試 |
XCUITest (iOS) | iOS | Swift, Obj-C | ? 需要 | iOS 原生測試 |
Selendroid | Android | Java | ? 不需要 | 舊版 Android 兼容測試 |
Calabash | Android, iOS | Ruby | ? 需要 | 跨平臺 BDD 測試 |
適用人群
-
測試工程師:做 App 的 UI 自動化測試
-
開發人員:在 CI/CD 流程中集成自動化測試
-
DevOps:搭建自動化測試平臺,提高發布質量
什么時候選擇 Appium?
? 需要同時測試?Android 和 iOS
? 不想依賴 App 源碼(測試已發布的 APK/IPA)
? 希望用?Python/Java/JS?等語言編寫測試腳本
什么時候不推薦 Appium?
? 需要極高的執行速度(原生框架如 Espresso/XCUITest 更快)
? 測試游戲(推薦 Unity Test Framework 或 Appium + OpenCV)