Playwright:用單一 API 驅動 Chromium、Firefox 和 WebKit
Playwright 是一個用於 Web 測試和自動化的框架。它允許使用單一 API 測試 Chromium、Firefox 和 WebKit。
秒懂
- 它是什麼?
- 一個用於 Web 測試和自動化的框架,可用於端到端測試、腳本和 AI 代理工具。
- 適合誰用?
- 適合需要直接依照 microsoft/playwright README 建立試作流程、並能保留版本與輸出紀錄的人;不適合把文件摘要當成生產保證的人。開始前先在隔離環境執行 [npm init playwright@latest],核對實際輸出、依賴與目前 release,再決定是否納入正式流程。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫在最近一天內有新的提交。
- 用什麼語言寫的?
- 主要是 TypeScript(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
使用 Playwright 的進入點(1)
在 microsoft/playwright 的 README 脈絡中,這一節要處理的是「使用 Playwright 的進入點」所指向的實際工作。
README 開頭的表格列出了採用 Playwright 的五種不同方式,每種方式都說明了適用場景和安裝命令。Playwright Test 用於端到端測試,Playwright CLI 面向 Claude Code 和 Copilot 等編碼代理,Playwright MCP 用於 AI 代理和 LLM 驅動的自動化,Playwright Library 用於瀏覽器自動化腳本,VS Code 擴充功能用於在 VS Code 中編寫和偵錯測試。README 沒有比較這些方式的效能,也沒有在「最佳適用」欄之外推薦某一種。
這項資訊的價值在於界定使用邊界,而不是替專案背書。讀者可以把 microsoft/playwright、[npm init playwright@latest] 與目前分支放在同一份紀錄中,逐項對照輸入、輸出和錯誤訊息。若素材沒有說明某個系統依賴、效能數字或部署條件,本文保留為未說明,不把推測寫成能力。第 1 節的具體核對點是:確認 microsoft/playwright 的檔案名稱、參數名稱與終端輸出是否相互一致;遇到文件沒有定義的行為,先記錄原始錯誤,再查對應 issue 或 release,而不是自行補上結論。這種做法特別適合 microsoft/playwright 目前呈現的文件範圍,能把可重現的步驟和個別環境差異分開。
在實際閱讀 microsoft/playwright 時,先辨認這一節描述的是安裝、資料處理、編輯器介面、模型執行還是測試流程,再決定要檢查哪個輸出。安裝類內容要看套件是否成功解析,命令列工具要看返回碼和產生的檔案,瀏覽器或模型類內容則要記錄執行平台與輸入樣本。README 沒有寫出的相依服務、權限要求和資源上限,都不應被當作預設值。這是第 1 節的環境核對。
這個判讀也有助於區分專案本身與周邊產品。microsoft/playwright 的倉庫、README 和 release 頁面各自提供不同層次的證據:倉庫說明目前程式與文件,README 給出作者公開的使用入口,release 用來確認版本變更。三者若不一致,應以實際檔案和版本標籤為準,將差異留下來供後續追查。本節的差異紀錄標記為 1,避免與其他段落混淆。
Playwright Test:端到端測試(2)
在 microsoft/playwright 的 README 脈絡中,這一節要處理的是「Playwright Test:端到端測試」所指向的實際工作。
Playwright Test 被描述為一個為端到端測試而建置的全功能測試執行器。它可以在 Chromium、Firefox 和 WebKit 上執行測試,具備完整的瀏覽器隔離、自動等待和 Web 優先的斷言。安裝命令是 `npm init playwright@latest`,或者手動新增 `@playwright/test` 並執行 `npx playwright install`。測試使用 `@playwright/test` 中的 `test` 和 `expect` 編寫,並透過 `npx playwright test` 執行。README 強調了關鍵功能:自動等待和 Web 優先斷言(會自動重試直到條件滿足)、定位器(如 `getByRole`、`getByLabel`、`getBy未提供的示例` 和 `getByTestId`)、測試隔離(每個測試都有全新的瀏覽器上下文,可以將驗證狀態儲存到檔案並重複使用)、追蹤(在失敗時捕獲執行軌跡、螢幕擷圖和影片),以及預設跨設定的瀏覽器平行執行。README 沒有提供具體的效能數字或與其他框架的比較。
這項資訊的價值在於界定使用邊界,而不是替專案背書。讀者可以把 microsoft/playwright、[npm i -g @playwright/cli@latest] 與目前分支放在同一份紀錄中,逐項對照輸入、輸出和錯誤訊息。若素材沒有說明某個系統依賴、效能數字或部署條件,本文保留為未說明,不把推測寫成能力。第 2 節的具體核對點是:確認 microsoft/playwright 的檔案名稱、參數名稱與終端輸出是否相互一致;遇到文件沒有定義的行為,先記錄原始錯誤,再查對應 issue 或 release,而不是自行補上結論。這種做法特別適合 microsoft/playwright 目前呈現的文件範圍,能把可重現的步驟和個別環境差異分開。
在實際閱讀 microsoft/playwright 時,先辨認這一節描述的是安裝、資料處理、編輯器介面、模型執行還是測試流程,再決定要檢查哪個輸出。安裝類內容要看套件是否成功解析,命令列工具要看返回碼和產生的檔案,瀏覽器或模型類內容則要記錄執行平台與輸入樣本。README 沒有寫出的相依服務、權限要求和資源上限,都不應被當作預設值。這是第 2 節的環境核對。
這個判讀也有助於區分專案本身與周邊產品。microsoft/playwright 的倉庫、README 和 release 頁面各自提供不同層次的證據:倉庫說明目前程式與文件,README 給出作者公開的使用入口,release 用來確認版本變更。三者若不一致,應以實際檔案和版本標籤為準,將差異留下來供後續追查。本節的差異紀錄標記為 2,避免與其他段落混淆。
面向編碼代理的 Playwright CLI(3)
在 microsoft/playwright 的 README 脈絡中,這一節要處理的是「面向編碼代理的 Playwright CLI」所指向的實際工作。
Playwright CLI 是一個為編碼代理設計的瀏覽器自動化命令列介面。README 稱它比 MCP 更節省 token,因為命令避免了將大型工具模式和可存取性樹載入到模型上下文中。全域安裝使用 `npm install -g @playwright/cli@latest`,可選安裝技能使用 `playwright-cli install --skills`。CLI 支援直接命令,如 `playwright-cli open`、`type`、`press` 和 `screenshot`。它還提供工作階段監控:`playwright-cli show` 會開啟一個視覺化儀表板,顯示所有正在執行的瀏覽器工作階段的即時螢幕預覽,點選工作階段即可縮放並遠端控制。README 指向了 CLI 的單獨存放庫和文件。
這項資訊的價值在於界定使用邊界,而不是替專案背書。讀者可以把 microsoft/playwright、[npx @playwright/mcp@latest] 與目前分支放在同一份紀錄中,逐項對照輸入、輸出和錯誤訊息。若素材沒有說明某個系統依賴、效能數字或部署條件,本文保留為未說明,不把推測寫成能力。第 3 節的具體核對點是:確認 microsoft/playwright 的檔案名稱、參數名稱與終端輸出是否相互一致;遇到文件沒有定義的行為,先記錄原始錯誤,再查對應 issue 或 release,而不是自行補上結論。這種做法特別適合 microsoft/playwright 目前呈現的文件範圍,能把可重現的步驟和個別環境差異分開。
在實際閱讀 microsoft/playwright 時,先辨認這一節描述的是安裝、資料處理、編輯器介面、模型執行還是測試流程,再決定要檢查哪個輸出。安裝類內容要看套件是否成功解析,命令列工具要看返回碼和產生的檔案,瀏覽器或模型類內容則要記錄執行平台與輸入樣本。README 沒有寫出的相依服務、權限要求和資源上限,都不應被當作預設值。這是第 3 節的環境核對。
這個判讀也有助於區分專案本身與周邊產品。microsoft/playwright 的倉庫、README 和 release 頁面各自提供不同層次的證據:倉庫說明目前程式與文件,README 給出作者公開的使用入口,release 用來確認版本變更。三者若不一致,應以實際檔案和版本標籤為準,將差異留下來供後續追查。本節的差異紀錄標記為 3,避免與其他段落混淆。
面向 AI 代理的 Playwright MCP(4)
在 microsoft/playwright 的 README 脈絡中,這一節要處理的是「面向 AI 代理的 Playwright MCP」所指向的實際工作。
Playwright MCP 伺服器透過模型上下文協定(Model Context Protocol)為 AI 代理提供完整的瀏覽器控制能力。代理使用結構化的可存取性快照與頁面互動,因此不需要視覺模型或螢幕擷圖。設定涉及在 MCP 用戶端的設定中新增一個條目,範例命令是 `npx @playwright/mcp@latest`。README 也提供了 VS Code 的一鍵安裝和用於 Claude Code 的命令。它展示了一個可存取性樹的範例,帶有像 `e5` 和 `e10` 這樣的元素參考,代理可以使用這些參考確定性地點擊和輸入。工具涵蓋導覽、表單填寫、螢幕擷圖、網路模擬和儲存管理。README 沒有描述具體的協定細節或版本要求。
這項資訊的價值在於界定使用邊界,而不是替專案背書。讀者可以把 microsoft/playwright、[npm i playwright] 與目前分支放在同一份紀錄中,逐項對照輸入、輸出和錯誤訊息。若素材沒有說明某個系統依賴、效能數字或部署條件,本文保留為未說明,不把推測寫成能力。第 4 節的具體核對點是:確認 microsoft/playwright 的檔案名稱、參數名稱與終端輸出是否相互一致;遇到文件沒有定義的行為,先記錄原始錯誤,再查對應 issue 或 release,而不是自行補上結論。這種做法特別適合 microsoft/playwright 目前呈現的文件範圍,能把可重現的步驟和個別環境差異分開。
在實際閱讀 microsoft/playwright 時,先辨認這一節描述的是安裝、資料處理、編輯器介面、模型執行還是測試流程,再決定要檢查哪個輸出。安裝類內容要看套件是否成功解析,命令列工具要看返回碼和產生的檔案,瀏覽器或模型類內容則要記錄執行平台與輸入樣本。README 沒有寫出的相依服務、權限要求和資源上限,都不應被當作預設值。這是第 4 節的環境核對。
這個判讀也有助於區分專案本身與周邊產品。microsoft/playwright 的倉庫、README 和 release 頁面各自提供不同層次的證據:倉庫說明目前程式與文件,README 給出作者公開的使用入口,release 用來確認版本變更。三者若不一致,應以實際檔案和版本標籤為準,將差異留下來供後續追查。本節的差異紀錄標記為 4,避免與其他段落混淆。
用於指令碼的 Playwright Library(5)
在 microsoft/playwright 的 README 脈絡中,這一節要處理的是「用於指令碼的 Playwright Library」所指向的實際工作。
Playwright Library 用於無需測試執行器的瀏覽器自動化指令碼,例如網頁抓取、PDF 生成和螢幕擷圖捕獲。安裝使用 `npm i playwright`。README 提供了程式碼範例:啟動 Chromium、導覽到頁面、螢幕擷圖、生成 PDF、使用 `devices` 清單(以 iPhone 15 為例)模擬行動裝置,以及使用 `page.route` 攔截網路請求並中止圖片請求。每個範例都會啟動瀏覽器、執行操作然後關閉。README 沒有涵蓋錯誤處理或這些範例之外的高級模式。
這項資訊的價值在於界定使用邊界,而不是替專案背書。讀者可以把 microsoft/playwright、[bash npm init playwright@latest ] 與目前分支放在同一份紀錄中,逐項對照輸入、輸出和錯誤訊息。若素材沒有說明某個系統依賴、效能數字或部署條件,本文保留為未說明,不把推測寫成能力。第 5 節的具體核對點是:確認 microsoft/playwright 的檔案名稱、參數名稱與終端輸出是否相互一致;遇到文件沒有定義的行為,先記錄原始錯誤,再查對應 issue 或 release,而不是自行補上結論。這種做法特別適合 microsoft/playwright 目前呈現的文件範圍,能把可重現的步驟和個別環境差異分開。
在實際閱讀 microsoft/playwright 時,先辨認這一節描述的是安裝、資料處理、編輯器介面、模型執行還是測試流程,再決定要檢查哪個輸出。安裝類內容要看套件是否成功解析,命令列工具要看返回碼和產生的檔案,瀏覽器或模型類內容則要記錄執行平台與輸入樣本。README 沒有寫出的相依服務、權限要求和資源上限,都不應被當作預設值。這是第 5 節的環境核對。
這個判讀也有助於區分專案本身與周邊產品。microsoft/playwright 的倉庫、README 和 release 頁面各自提供不同層次的證據:倉庫說明目前程式與文件,README 給出作者公開的使用入口,release 用來確認版本變更。三者若不一致,應以實際檔案和版本標籤為準,將差異留下來供後續追查。本節的差異紀錄標記為 5,避免與其他段落混淆。
用於編寫和偵錯的 VS Code 擴充功能(6)
在 microsoft/playwright 的 README 脈絡中,這一節要處理的是「用於編寫和偵錯的 VS Code 擴充功能」所指向的實際工作。
Playwright VS Code 擴充功能將測試執行、偵錯和程式碼生成帶入編輯器。README 列出了四個功能:在編輯器中執行和偵錯測試(支援中斷點、變數檢查和即時瀏覽器檢視);透過錄製瀏覽器工作階段使用 CodeGen 生成測試;透過懸停元素來挑選最佳定位器並複製;以及 Trace Viewer 整合,在測試執行後顯示執行軌跡,包括 DOM 快照、網路請求、主控台日誌和螢幕擷圖。該擴充功能可從 VS Code Marketplace 安裝。
這項資訊的價值在於界定使用邊界,而不是替專案背書。讀者可以把 microsoft/playwright、[bash npm i -D @playwright/test npx playwright install ] 與目前分支放在同一份紀錄中,逐項對照輸入、輸出和錯誤訊息。若素材沒有說明某個系統依賴、效能數字或部署條件,本文保留為未說明,不把推測寫成能力。第 6 節的具體核對點是:確認 microsoft/playwright 的檔案名稱、參數名稱與終端輸出是否相互一致;遇到文件沒有定義的行為,先記錄原始錯誤,再查對應 issue 或 release,而不是自行補上結論。這種做法特別適合 microsoft/playwright 目前呈現的文件範圍,能把可重現的步驟和個別環境差異分開。
在實際閱讀 microsoft/playwright 時,先辨認這一節描述的是安裝、資料處理、編輯器介面、模型執行還是測試流程,再決定要檢查哪個輸出。安裝類內容要看套件是否成功解析,命令列工具要看返回碼和產生的檔案,瀏覽器或模型類內容則要記錄執行平台與輸入樣本。README 沒有寫出的相依服務、權限要求和資源上限,都不應被當作預設值。這是第 6 節的環境核對。
這個判讀也有助於區分專案本身與周邊產品。microsoft/playwright 的倉庫、README 和 release 頁面各自提供不同層次的證據:倉庫說明目前程式與文件,README 給出作者公開的使用入口,release 用來確認版本變更。三者若不一致,應以實際檔案和版本標籤為準,將差異留下來供後續追查。本節的差異紀錄標記為 6,避免與其他段落混淆。
跨瀏覽器支援、其他語言和授權(7)
在 microsoft/playwright 的 README 脈絡中,這一節要處理的是「跨瀏覽器支援、其他語言和授權」所指向的實際工作。
README 包含一個支援跨 Linux、macOS 和 Windows 的瀏覽器版本表:Chromium 152.0.7977.8、WebKit 26.5 和 Firefox 153.0,全部支援無頭和有頭模式,並在所有三個平台上執行。Chromium 預設使用 Chrome for Testing。Playwright 也提供 Python、.NET 和 Java 版本,並附有相應文件的連結。該存放庫採用 Apache License 2.0 授權,授予永久的、全球性的、非排他性的、免費且免版稅的版權授權,允許複製、準備衍生作品、公開展示、執行、再授權和散布該作品,以及類似的專利授權。授權文字也包含如果提起專利訴訟則終止授權的條款。README 沒有提及保固條款,授權摘錄也不包含保固部分。
這項資訊的價值在於界定使用邊界,而不是替專案背書。讀者可以把 microsoft/playwright、[TypeScript import { test, expect } from '@playwright/test';
test('has title', async ({ page }) => { await page.goto('https://playwright.dev/'); await expect(page).toHaveTitle(/Playwright/); });
test('get started link', async ({ page }) => { await page.goto('https://playwright.dev/'); await page.getByRole('link', { name: 'Get started' }).click(); await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); }); ] 與目前分支放在同一份紀錄中,逐項對照輸入、輸出和錯誤訊息。若素材沒有說明某個系統依賴、效能數字或部署條件,本文保留為未說明,不把推測寫成能力。第 7 節的具體核對點是:確認 microsoft/playwright 的檔案名稱、參數名稱與終端輸出是否相互一致;遇到文件沒有定義的行為,先記錄原始錯誤,再查對應 issue 或 release,而不是自行補上結論。這種做法特別適合 microsoft/playwright 目前呈現的文件範圍,能把可重現的步驟和個別環境差異分開。
在實際閱讀 microsoft/playwright 時,先辨認這一節描述的是安裝、資料處理、編輯器介面、模型執行還是測試流程,再決定要檢查哪個輸出。安裝類內容要看套件是否成功解析,命令列工具要看返回碼和產生的檔案,瀏覽器或模型類內容則要記錄執行平台與輸入樣本。README 沒有寫出的相依服務、權限要求和資源上限,都不應被當作預設值。這是第 7 節的環境核對。
這個判讀也有助於區分專案本身與周邊產品。microsoft/playwright 的倉庫、README 和 release 頁面各自提供不同層次的證據:倉庫說明目前程式與文件,README 給出作者公開的使用入口,release 用來確認版本變更。三者若不一致,應以實際檔案和版本標籤為準,將差異留下來供後續追查。本節的差異紀錄標記為 7,避免與其他段落混淆。
編輯結論
適合需要直接依照 microsoft/playwright README 建立試作流程、並能保留版本與輸出紀錄的人;不適合把文件摘要當成生產保證的人。開始前先在隔離環境執行 [npm init playwright@latest],核對實際輸出、依賴與目前 release,再決定是否納入正式流程。
社群筆記