自動化測試
APP自動化測試環境建置
建立應用程式 UI 自動化測試 - 以 Robot Framework 為例
https://ithelp.ithome.com.tw/users/20168859/ironman/7650
java
jdk-24_windows-x64_bin
install appium
https://ithelp.ithome.com.tw/articles/10360843
Robot Framework 安裝及初體驗
install python
https://www.python.org/downloads/
install nvm
https://github.com/coreybutler/nvm-windows
nvm install lts
nvm use 22.16.0
npm install -g appium
install appium-inspector
https://github.com/appium/appium-inspector
{
"platformName": "Android",
"appium:automationName": "uiautomator2",
"appium:deviceName": "Android",
"appium:appPackage": "com.android.settings",
"appium:appActivity": ".Settings"
}
# 安裝其他套件
pip install robotframework
pip install robotframework-appiumlibrary
要讓 Appium 透過 USB 控制實體手機(例如 Android)來做測試,你需要讓你的 notebook(筆電)與手機透過 USB 連線,並配合幾個工具來完成連接。這裡用 Android + Windows notebook 為範例流程說明。
✅ 一、前置條件檢查
📱 手機端設定:
-
開啟「開發者選項」
-
到手機設定 → 關於手機 → 點「版本號」七次 → 解鎖開發者模式
-
-
打開 USB 偵錯
-
設定 → 系統 → 開發者選項 → 開啟「USB 偵錯」
-
-
用 USB 傳輸線接上筆電
✅ 二、筆電端(Windows)準備
1️⃣ 安裝 ADB(Android Debug Bridge)
最快方法:安裝 Android Platform Tools(免裝 Android Studio):
👉 下載網址:https://developer.android.com/studio/releases/platform-tools
解壓縮後,把 platform-tools 資料夾加到環境變數 PATH。
Windows
如果安裝 Andrioid Studio
#位置在
C:\Users\<你的帳號>\AppData\Local\Android\Sdk\platform-tools\adb.exe
設定系統環境變數
-
按下 Windows 鍵 → 輸入「環境變數」→ 選擇「編輯系統環境變數」
-
點「環境變數(Environment Variables)」
-
在 使用者變數 或 系統變數 中新增:
變數名稱 變數值 ANDROID_HOMEC:\Users\MOMO\AppData\Local\Android\SdkANDROID_SDK_ROOT(可選)同上 -
編輯
Path變數 → 加入以下路徑
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\emulator
完成後關閉並重新啟動 cmd / PowerShell / VSCode terminal
Mac
brew install --cask android-platform-tools
驗證:
adb devices
第一次會提示你在手機上授權,允許 USB 偵錯。
✅ 三、安裝 Appium 驅動(UIAutomator2)
appium driver install uiautomator2
確認:
appium driver list
✅ 四、啟動 Appium Server
appium
預設會在 http://localhost:4723 開啟伺服器。
✅ 五、撰寫測試程式連接手機
📝 以 Python 為例(也可用 Java、JS 等)
from appium import webdriver
desired_caps = {
"platformName": "Android",
"deviceName": "Android Device", # 或填 adb devices 顯示的 ID
"appPackage": "com.android.settings", # 測試用,可改成你自己的 app
"appActivity": ".Settings",
"automationName": "UiAutomator2"
}
driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)
driver.quit()
✅ 六、常見問題排解
| 問題 | 解法 |
|---|---|
adb devices 看不到手機 |
檢查線材、USB 傳輸模式是否為「資料傳輸」,確認有開 USB 偵錯 |
| Appium 找不到設備 | 確認驅動安裝好、手機有授權、Appium Server 已啟動 |
| Appium 錯誤:no device found | 驗證 adb devices 有成功列出設備 |
| Appium Inspector 無法開啟 session | 確認 desired capabilities 正確,並與 appium port 對上 |
如果你想搭配 Robot Framework 來寫測試,也可以再幫你整合 robotframework-appiumlibrary 的使用方式。
是否也需要說明 iOS 連線流程(macOS + iPhone 測試)?
APP自動化測試安裝(IOS)
$xcode-select -p
/Applications/Xcode.app/Contents/Developer
$xcode-select -print-path
/Applications/Xcode.app/Contents/Developer
$xcrun simctl list devices
== Devices ==
-- iOS 17.0 --
iPhone SE (3rd generation) (C2263CE0-B8D0-4A45-A8B6-819EBFDC6B3C) (Shutdown)
iPhone 15 (342CFDF8-F135-4C7E-B721-809DBAE2FED6) (Shutdown)
iPhone 15 Plus (A1502CF4-2655-41EF-ACCA-344DE1880989) (Shutdown)
iPhone 15 Pro (212B06CE-ABA0-4ED1-826C-E34313D29FD8) (Shutdown)
iPhone 15 Pro Max (C32A003C-E330-4653-98BD-67D69034B784) (Shutdown)
iPad Air (5th generation) (8B350383-3091-45C8-98A9-9EF9FAC09869) (Shutdown)
iPad (10th generation) (23A6B6DD-A65F-4EA4-8B20-D2504025FABB) (Shutdown)
iPad mini (6th generation) (2549DC38-10CE-4117-919C-2EA9F0105EFD) (Shutdown)
iPad Pro (11-inch) (4th generation) (1994EEF6-5F7D-4A93-A8E8-548988FF7F82) (Shutdown)
iPad Pro (12.9-inch) (6th generation) (96C9D1A6-AD3C-48DF-8A27-310800A51FF4) (Shutdown)
-- iOS 18.1 --
iPhone SE (3rd generation) (B50D832D-774F-4B7D-9D14-82395408AEA0) (Shutdown)
iPhone 16 Pro (1E598AB9-170B-429D-A45E-818CEFAC9B26) (Shutdown)
iPhone 16 Pro Max (E6888AFA-4A3E-4E18-BDB6-C270815306FE) (Shutdown)
iPhone 16 (AB625102-C6F4-425B-A280-D8C0E472A9B1) (Shutdown)
iPhone 16 Plus (AD5044C4-3EE2-4D41-897B-0CDC1AA82800) (Shutdown)
iPad (10th generation) (ACED15AA-AB6E-4B6B-A453-53A139698288) (Shutdown)
iPad Air 11-inch (M2) (3F29CBE6-098A-407E-B2F0-C03F10ACB3BC) (Shutdown)
iPad Air 13-inch (M2) (1E1CBA41-26E4-4825-B78F-9B1218B45CBD) (Shutdown)
iPad mini (A17 Pro) (EFFCCE75-3E77-4131-8BF3-1A2D23EDDC9A) (Shutdown)
iPad Pro 11-inch (M4) (85ADF4A5-46FD-4601-8B29-BD21892E3512) (Shutdown)
iPad Pro 13-inch (M4) (43E67B57-74B9-4060-8C20-CB892863F586) (Shutdown)
相關連結
AppiumLibrary key word
https://serhatbolsu.github.io/robotframework-appiumlibrary/AppiumLibrary.html#Introduction
Appium 中文翻譯
https://www.kancloud.cn/testerhome/appium_docs_cn/3209426
Appium、Python、Robot Framework 之間的關係
✅ Appium、Python、Robot Framework 之間的關係:
這三者可以整合在一起,是因為:
| 技術 | 角色 | 說明 |
|---|---|---|
| Appium | 測試引擎 | 提供 WebDriver API,控制手機(Android / iOS)的自動化操作 |
| Python | 實作擴充邏輯的程式語言 | 可以寫自己的測試邏輯、自訂關鍵字(如你現在做的) |
| Robot Framework | 測試框架(高階語法) | 用關鍵字驅動的方式來寫測試案例,支援 Python Library |
🔄 它們如何互動?
[Robot Framework]
|
| 呼叫
↓
[自訂 Python 關鍵字]
|
| 呼叫
↓
[AppiumLibrary(內部就是 WebDriver)]
|
↓
[Appium Server → 控制手機裝置]
📦 關鍵套件:
| 套件名稱 | 用途 |
|---|---|
AppiumLibrary |
Robot Framework 的套件,封裝了 Appium 操作 |
robotframework |
測試框架本體 |
appium-python-client |
Python 端 Appium 的驅動(AppiumLibrary 內部使用) |
✅ 典型架構目錄
project/
├── tests/
│ └── test_login.robot
├── keywords/
│ └── custom_scroll.py ← 這是你寫的 Python 關鍵字
├── resources/
│ └── variables.robot
├── requirements.txt
✅ Robot 測試如何叫到 Appium?
*** Settings ***
Library AppiumLibrary
Library keywords/custom_scroll.py
*** Test Cases ***
登入後登出
Open Application http://localhost:4723 platformName=iOS ...
Scroll To Text And Tap 登出
你寫的 Scroll To Text And Tap 是一個 Python 關鍵字,會去呼叫 Appium WebDriver 去執行滑動與點擊。
✅ 重點概念(幫你牢記)
-
Robot Framework是控制流程 + 組合測試邏輯。 -
AppiumLibrary是控制手機的橋樑(Python 包裝)。 -
你可以寫 Python function,然後
@keyword暴露成 Robot 可以用的「關鍵字」。
如果你想我幫你整理一張「整合架構圖」或提供一份「快速入門模板」,我也可以幫你生成。需要嗎?