Playwright 是一個強大的瀏覽器自動化框架,原生支援 Chromium、Firefox 和 WebKit,能在 Windows、macOS、Linux 上一致運行,適合用來做端到端測試、資料擷取(爬蟲)、以及高效率的網頁操作自動化。它提供可靠的自動等待機制與直覺的定位器 API(Locator),減少因元素尚未渲染或事件未完成而產生的脆弱測試;同時支援無頭與有頭模式、行為錄製與程式碼生成、並行執行、網路攔截與模擬(如假資料、延遲、離線)、以及完整的追蹤檔與快照,方便你在失敗時快速回溯問題。本文將以 Python 為主線,從環境安裝與基本設定開始,示範如何啟動瀏覽器、導航頁面、輸入與點擊、等待動態內容、到使用 codegen 錄製互動並產生可維護的腳本;也會介紹同步與非同步(async/await)的使用差異、最佳化選擇器策略、常見錯誤與除錯技巧,最後補充在 CI/CD 與多瀏覽器矩陣下的實務建議,幫你把自動化從單機腳本,進一步提升到可擴展、可監控、且穩定的工作流程。
- 安裝 Playwright 套件:
- pip install playwright
- 基本使用:啟動瀏覽器並開啟網頁
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False) # 開啟瀏覽器(非隱藏模式)
page = browser.new_page()
page.goto("https://example.com")
print(page.title()) # 印出網頁標題
browser.close()
自動化點擊與輸入:模擬使用者操作
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
page = browser.new_page()
page.goto("https://example.com/login")
# 輸入帳號與密碼
page.fill('input[name="username"]', 'my_user')
page.fill('input[name="password"]', 'my_password')
# 點擊登入按鈕
page.click('button[type="submit"]')
# 等待跳轉後的頁面載入
page.wait_for_load_state('networkidle')
print("登入成功,當前頁面標題:", page.title())
- 進階應用:自動生成操作程式碼
- Playwright 提供一個超強功能:Codegen,可以自動記錄你的操作並產生對應的 Python 程式碼! 這會開啟瀏覽器並記錄你所有的點擊、輸入等操作,並即時產生 Python 程式碼。你可以把這段程式碼複製到你的專案中,作為自動化腳本的基礎。
- 使用方式
- playwright codegen https://example.com –target python
- 使用情況
- 使用後可以發現網頁的每一個元件都會變成可以選擇的,所以寫程式的時候只要執行動作,則相對應的程式碼就會被馬上編輯出來,當編輯完後就可以直接複製到專案中

- 參考資料
- https://medium.com/%E9%BA%A5%E5%85%8B%E7%9A%84%E5%8D%8A%E8%B7%AF%E5%87%BA%E5%AE%B6%E7%AD%86%E8%A8%98/%E5%BF%83%E5%BE%97-%E8%AA%8D%E8%AD%98%E5%90%8C%E6%AD%A5%E8%88%87%E9%9D%9E%E5%90%8C%E6%AD%A5-callback-promise-async-await-640ea491ea64
- Dialogs | Playwright
- https://stackoverflow.com/questions/76636065/how-to-deal-with-popups-in-playwright
- No code automation testing – Playwright Codegen tutorial! – YouTube