自動化操作
自動化操作 UI(使用者介面)其實有很多方案,會依照你的使用場景(桌面、Web、手機)而不同。
🖥️ 一、桌面應用(Windows / Mac)
1️⃣ 無程式 / 低程式方案
-
AutoHotkey
- 適合 Windows
- 用腳本控制滑鼠、鍵盤、視窗
- 很輕量,適合快速自動化重複操作
-
Keyboard Maestro
- Mac 專用
- 視覺化流程,適合不想寫太多程式的人
-
Microsoft Power Automate Desktop
- 微軟官方工具
- 拖拉式流程(RPA)
- 可自動點擊 UI、讀取畫面
2️⃣ 程式化方案(較強大)
-
PyAutoGUI
- Python 控制滑鼠鍵盤
- 可搭配影像辨識(找按鈕)
-
SikuliX
- 用截圖辨識 UI 元素
- 適合沒有 API 的軟體
-
WinAppDriver
- 類似 Selenium,但用於 Windows App
🌐 二、Web UI 自動化(網頁)
這是最常見的場景 👇
-
Selenium
- 最經典
- 支援多語言(Python / Java / JS)
- 可模擬點擊、輸入、登入等
-
Playwright
- 新一代工具(比 Selenium 更穩定)
- 支援多瀏覽器
- 對動態網站更友好
-
Puppeteer
- Node.js 專用
- 控制 Chrome / Chromium
📱 三、手機 UI 自動化(Android / iOS)
-
Appium
- 支援 Android + iOS
- 類似 Selenium 的概念
-
UIAutomator
- Android 原生工具
- 穩定但偏技術
🤖 四、企業級 RPA(機器人流程自動化)
如果你是做商業流程(例如:自動填報表)👇
- UiPath
- Automation Anywhere
- Blue Prism
👉 特點:
- 幾乎不用寫程式
- 可整合 Excel、ERP、Web、Email
🎯 怎麼選最適合?
| 需求 | 推薦 |
|---|---|
| 自動點擊滑鼠/鍵盤 | AutoHotkey / PyAutoGUI |
| 操作網站 | Playwright(首推) / Selenium |
| 操作沒有 API 的軟體 | SikuliX |
| 手機 App 自動化 | Appium |
| 商業流程自動化 | Power Automate / UiPath |
💡 小建議(很重要)
- 如果是「網頁」👉 優先用 Playwright(穩很多)
- 如果是「亂七八糟 UI」👉 用影像辨識(SikuliX)
- 如果是「日常自動點擊」👉 AutoHotkey 最快上手
🎯 流程拆解
1️⃣ 從 Google Sheet 讀取一列資料(有 counter) 2️⃣ 貼到網頁輸入框並送出 3️⃣ 等待結果(10–15 秒) 4️⃣ 把結果寫回 Sheet 5️⃣ 換下一筆
👉 本質就是:資料迴圈 + 網頁操作 + 回寫
🚀 最推薦方案(穩定 & 可擴展)
🥇 Playwright + Google Sheets API
為什麼選這個?
- 不靠滑鼠位置(不會因畫面跑掉壞掉)
- 可直接抓網頁元素(比複製貼上穩)
- 可以真正「讀寫 Google Sheet」(不用切視窗)
🧠 流程會變成這樣:
讀取 Sheet → 拿到第 N 筆文字
→ 打開網頁
→ 填入輸入框
→ 點送出
→ 等結果出現
→ 抓結果文字
→ 寫回 Sheet
→ N+1
👉 完全不需要: ❌ 手動複製 ❌ 切換視窗 ❌ 控制滑鼠
🧩 技術組合
1️⃣ 網頁操作
- Playwright
2️⃣ Google Sheets 存取
- Google Sheets API 或簡化:
- gspread(Python 好用)
🧪 Python 範例(簡化版)
from playwright.sync_api import sync_playwright
import gspread
# 連接 Google Sheets
gc = gspread.service_account(filename="credentials.json")
sheet = gc.open("你的試算表").sheet1
rows = sheet.get_all_values()
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("你的目標網站")
for i, row in enumerate(rows[1:], start=2): # 假設第一列是標題
text = row[0]
# 輸入文字
page.fill("textarea", text)
page.click("button:has-text('送出')")
# 等待結果
page.wait_for_timeout(15000)
# 抓結果
result = page.inner_text("結果的selector")
# 寫回 Sheet
sheet.update_cell(i, 2, result)
browser.close()
⚠️ 如果你「不想寫程式」
也可以用這個👇
🟡 無程式方案(比較簡單但較不穩)
- Microsoft Power Automate Desktop
👉 可以做到:
- 自動複製 Sheet
- 自動貼到網頁
- 等待
- 複製回來
👉 但缺點:
- 容易壞(UI變就壞)
- 需要畫面固定
- 比較慢
🧠 關鍵建議(很重要)
❗ 不要用「滑鼠座標」做
(像 PyAutoGUI 那種) 👉 會很容易壞(解析度、視窗位置)
✅ 用「元素選擇器」
(Playwright / Selenium) 👉 穩定度差很多
⏱️ 等待方式要用「條件等待」
不要用死等 15 秒:
page.wait_for_selector("結果出現的元素")
👉 比固定等待快 + 穩