自動化測試

APP自動化測試環境建置

 

建立應用程式 UI 自動化測試 - 以 Robot Framework 為例

https://ithelp.ithome.com.tw/users/20168859/ironman/7650

java

Java Downloads | Oracle 台灣

jdk-24_windows-x64_bin

image-1751637163184.png

image-1751637195203.png

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

image-1751630234131.png

image-1750756211301.png

image-1750756233619.png

install appium-inspector
https://github.com/appium/appium-inspector

image-1750757422111.png

{
  "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 為範例流程說明。


✅ 一、前置條件檢查

📱 手機端設定:

  1. 開啟「開發者選項」

    • 到手機設定 → 關於手機 → 點「版本號」七次 → 解鎖開發者模式

  2. 打開 USB 偵錯

    • 設定 → 系統 → 開發者選項 → 開啟「USB 偵錯」

  3. 用 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

設定系統環境變數

  1. 按下 Windows 鍵 → 輸入「環境變數」→ 選擇「編輯系統環境變數」

  2. 點「環境變數(Environment Variables)」

  3. 在 使用者變數 或 系統變數 中新增:

    變數名稱 變數值
    ANDROID_HOME C:\Users\MOMO\AppData\Local\Android\Sdk
    ANDROID_SDK_ROOT(可選) 同上
  4. 編輯 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)

image-1751525865876.png

image-1751526020594.png

$xcode-select -p
/Applications/Xcode.app/Contents/Developer
$xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

image-1751526490734.png

image-1751526646989.png

$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) 

image-1751823189170.png

image-1751823868524.png

相關連結

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 去執行滑動與點擊。


✅ 重點概念(幫你牢記)


如果你想我幫你整理一張「整合架構圖」或提供一份「快速入門模板」,我也可以幫你生成。需要嗎?