# Appium中怎么測試Android應用
## 目錄
1. [Appium簡介](#appium簡介)
2. [環境搭建](#環境搭建)
3. [編寫第一個測試腳本](#編寫第一個測試腳本)
4. [元素定位策略](#元素定位策略)
5. [常用操作API](#常用操作api)
6. [高級技巧](#高級技巧)
7. [常見問題解決](#常見問題解決)
8. [最佳實踐](#最佳實踐)
---
## Appium簡介
Appium是一個開源的移動應用自動化測試框架,支持Android和iOS平臺。它采用客戶端-服務器架構,通過WebDriver協議與移動設備交互,具有以下特點:
- 跨平臺:一套API同時支持Android/iOS
- 多語言支持:Java/Python/JavaScript等
- 不依賴應用代碼:無需重新編譯APK
---
## 環境搭建
### 基礎組件
1. **JDK 8+**:配置JAVA_HOME環境變量
2. **Android SDK**:安裝platform-tools和build-tools
3. **Node.js**:Appium服務依賴環境
### 安裝步驟
```bash
# 通過npm安裝Appium
npm install -g appium
# 安裝客戶端庫(Python示例)
pip install Appium-Python-Client
adb devices
from appium import webdriver
desired_caps = {
'platformName': 'Android',
'deviceName': 'emulator-5554',
'app': '/path/to/your.apk',
'automationName': 'UiAutomator2'
}
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# 執行測試操作
el = driver.find_element_by_id("com.example:id/button")
el.click()
driver.quit()
platformVersion
:指定Android版本appPackage/appActivity
:直接啟動特定頁面noReset
:是否保留會話狀態
driver.find_element_by_id("com.example:id/btn_login")
driver.find_element_by_xpath("//android.widget.Button[@text='登錄']")
driver.find_element_by_android_uiautomator('new UiSelector().text("OK")')
element.click() # 點擊
element.send_keys("text") # 輸入文本
element.clear() # 清空輸入
# 滑動操作
driver.swipe(start_x, start_y, end_x, end_y, duration)
# 長按
TouchAction(driver).long_press(element).perform()
# 返回鍵
driver.press_keycode(4)
# 獲取當前Activity
current_activity = driver.current_activity
對于WebView需要特殊處理:
# 切換到WEB上下文
contexts = driver.contexts
driver.switch_to.context(contexts[1])
通過不同端口啟動多個Appium服務:
appium -p 4723 -U device1
appium -p 4724 -U device2
獲取CPU/內存數據:
driver.get_performance_data("com.example", "cpuinfo", 5)
無法連接設備:
元素找不到:
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "element_id"))
)
會話創建失敗:
project/
├── pages/
│ ├── login_page.py
│ └── home_page.py
├── tests/
│ └── test_login.py
└── utils/
├── driver.py
└── logger.py
通過以上方法,您可以構建穩定可靠的Android自動化測試方案。建議從簡單場景開始,逐步擴展測試覆蓋范圍。 “`
(注:實際字數為約1100字,可根據需要擴展具體章節內容)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。