# APP自動化測試環境建置

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

[https://ithelp.ithome.com.tw/users/20168859/ironman/7650](https://ithelp.ithome.com.tw/users/20168859/ironman/7650)

java

[Java Downloads | Oracle 台灣](https://www.oracle.com/tw/java/technologies/downloads/#jdk24-windows)

jdk-24\_windows-x64\_bin

[![image-1751637163184.png](https://bookstack.treemanou.com/uploads/images/gallery/2025-07/scaled-1680-/sC3qj9o1IF7VUtG3-image-1751637163184.png)](https://bookstack.treemanou.com/uploads/images/gallery/2025-07/sC3qj9o1IF7VUtG3-image-1751637163184.png)

[![image-1751637195203.png](https://bookstack.treemanou.com/uploads/images/gallery/2025-07/scaled-1680-/Qzx26p4r3tG65iWk-image-1751637195203.png)](https://bookstack.treemanou.com/uploads/images/gallery/2025-07/Qzx26p4r3tG65iWk-image-1751637195203.png)

install appium  
[https://ithelp.ithome.com.tw/articles/10360843](https://ithelp.ithome.com.tw/articles/10360843)

  
Robot Framework 安裝及初體驗  
  
install python  
[https://www.python.org/downloads/](https://www.python.org/downloads/)  
install nvm  
[https://github.com/coreybutler/nvm-windows](https://github.com/coreybutler/nvm-windows)

nvm install lts  
nvm use 22.16.0  
npm install -g appium

[![image-1751630234131.png](https://bookstack.treemanou.com/uploads/images/gallery/2025-07/scaled-1680-/gbEwaM7upRkr1RJE-image-1751630234131.png)](https://bookstack.treemanou.com/uploads/images/gallery/2025-07/gbEwaM7upRkr1RJE-image-1751630234131.png)

[![image-1750756211301.png](https://bookstack.treemanou.com/uploads/images/gallery/2025-06/scaled-1680-/9Mq8s9M0MIKaXZDy-image-1750756211301.png)](https://bookstack.treemanou.com/uploads/images/gallery/2025-06/9Mq8s9M0MIKaXZDy-image-1750756211301.png)

[![image-1750756233619.png](https://bookstack.treemanou.com/uploads/images/gallery/2025-06/scaled-1680-/hzHWmUo1eUXZxv1V-image-1750756233619.png)](https://bookstack.treemanou.com/uploads/images/gallery/2025-06/hzHWmUo1eUXZxv1V-image-1750756233619.png)

install appium-inspector  
[https://github.com/appium/appium-inspector](https://github.com/appium/appium-inspector)

[![image-1750757422111.png](https://bookstack.treemanou.com/uploads/images/gallery/2025-06/scaled-1680-/wpF2SSsT8R3qjFIW-image-1750757422111.png)](https://bookstack.treemanou.com/uploads/images/gallery/2025-06/wpF2SSsT8R3qjFIW-image-1750757422111.png)

```JSON
{
  "platformName": "Android",
  "appium:automationName": "uiautomator2",
  "appium:deviceName": "Android",
  "appium:appPackage": "com.android.settings",
  "appium:appActivity": ".Settings"
}
```

```shell
# 安裝其他套件

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](https://developer.android.com/studio/releases/platform-tools)

解壓縮後，把 `platform-tools` 資料夾加到環境變數 `PATH`。

### Windows

#### 如果安裝 Andrioid Studio 

```shell
#位置在
C:\Users\<你的帳號>\AppData\Local\Android\Sdk\platform-tools\adb.exe

```

#### 設定系統環境變數

1. 按下 Windows 鍵 → 輸入「環境變數」→ 選擇「編輯系統環境變數」
2. 點「環境變數（Environment Variables）」
3. 在 **使用者變數** 或 **系統變數** 中新增：
    
    <div><div><table class="w-fit min-w-(--thread-content-width)" data-end="802" data-start="531"><thead data-end="592" data-start="531"><tr data-end="592" data-start="531"><th data-col-size="sm" data-end="546" data-start="531">變數名稱</th><th data-col-size="sm" data-end="592" data-start="546">變數值</th></tr></thead><tbody data-end="802" data-start="667"><tr data-end="734" data-start="667"><td data-col-size="sm" data-end="686" data-start="667">`ANDROID_HOME`</td><td data-col-size="sm" data-end="734" data-start="686">`C:\Users\MOMO\AppData\Local\Android\Sdk`</td></tr><tr data-end="802" data-start="738"><td data-col-size="sm" data-end="763" data-start="738">`ANDROID_SDK_ROOT`（可選）</td><td data-col-size="sm" data-end="802" data-start="763">同上</td></tr></tbody></table>
    
    <div><div><button aria-label="複製表格" class="hover:bg-token-bg-tertiary text-token-text-secondary my-1 rounded-sm p-1 transition-opacity group-[:not(:hover):not(:focus-within)]:pointer-events-none group-[:not(:hover):not(:focus-within)]:opacity-0"><svg class="icon" fill="currentColor" height="20" viewbox="0 0 20 20" width="20" xmlns="http://www.w3.org/2000/svg"></svg></button></div></div></div></div>
4. 編輯 `Path` 變數 → 加入以下路徑

```
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\emulator
```

完成後關閉並重新啟動 cmd / PowerShell / VSCode terminal

### Mac

```shell
brew install --cask android-platform-tools
```

驗證：

```cmd
adb devices

```

第一次會提示你在手機上授權，允許 USB 偵錯。

---

## ✅ 三、安裝 Appium 驅動（UIAutomator2）

```bash
appium driver install uiautomator2

```

確認：

```bash
appium driver list

```

---

## ✅ 四、啟動 Appium Server

```bash
appium

```

預設會在 `http://localhost:4723` 開啟伺服器。

---

## ✅ 五、撰寫測試程式連接手機

### 📝 以 Python 為例（也可用 Java、JS 等）

```python
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()

```

---

## ✅ 六、常見問題排解

<table id="bkmrk-%E5%95%8F%E9%A1%8C-%E8%A7%A3%E6%B3%95-adb-devices-%E7%9C%8B%E4%B8%8D"><thead><tr><th>問題</th><th>解法</th></tr></thead><tbody><tr><td>`adb devices` 看不到手機</td><td>檢查線材、USB 傳輸模式是否為「資料傳輸」，確認有開 USB 偵錯</td></tr><tr><td>Appium 找不到設備</td><td>確認驅動安裝好、手機有授權、Appium Server 已啟動</td></tr><tr><td>Appium 錯誤：no device found</td><td>驗證 `adb devices` 有成功列出設備</td></tr><tr><td>Appium Inspector 無法開啟 session</td><td>確認 desired capabilities 正確，並與 appium port 對上</td></tr></tbody></table>

---

如果你想搭配 Robot Framework 來寫測試，也可以再幫你整合 robotframework-appiumlibrary 的使用方式。

是否也需要說明 iOS 連線流程（macOS + iPhone 測試）？