瀏覽器
簡介
每個版本的 Playwright 都需要特定版本的瀏覽器二進位檔才能運作。您需要使用 Playwright CLI 來安裝這些瀏覽器。
每次發布時,Playwright 都會更新所支援的瀏覽器版本,因此最新的 Playwright 隨時都能支援最新的瀏覽器。這意味著每次更新 Playwright 時,您可能需要重新執行 install
CLI 指令。
安裝瀏覽器
Playwright 可以安裝支援的瀏覽器。執行不帶參數的指令將安裝預設瀏覽器。
playwright install
您也可以透過提供參數來安裝特定瀏覽器:
playwright install webkit
查看所有支援的瀏覽器:
playwright install --help
安裝系統相依套件
系統相依套件可以自動安裝。這對於 CI 環境很有用。
playwright install-deps
您也可以透過傳遞參數來安裝單個瀏覽器的相依套件:
playwright install-deps chromium
您也可以將 install-deps
與 install
結合使用,這樣瀏覽器和作業系統相依套件就能透過單一指令安裝。
playwright install --with-deps chromium
請參閱系統需求了解官方支援的作業系統。
設定瀏覽器
Playwright 可以在 Chromium、WebKit 和 Firefox 瀏覽器上執行測試,也可以在品牌瀏覽器(如 Google Chrome 和 Microsoft Edge)上執行測試。它也可以在模擬的平板電腦和行動裝置上執行。請參閱裝置參數註冊表取得所選桌面、平板電腦和行動裝置的完整清單。
在不同瀏覽器上執行測試
在特定瀏覽器上執行測試:
pytest test_login.py --browser webkit
在多個瀏覽器上執行測試:
pytest test_login.py --browser webkit --browser firefox
對行動裝置檢視區進行測試:
pytest test_login.py --device="iPhone 13"
對品牌瀏覽器進行測試:
pytest test_login.py --browser-channel msedge
Chromium
對於 Google Chrome、Microsoft Edge 和其他基於 Chromium 的瀏覽器,預設情況下,Playwright 使用開源 Chromium 建置版。由於 Chromium 專案領先於品牌瀏覽器,當世界使用 Google Chrome N 時,Playwright 已經支援將在幾週後發布於 Google Chrome 和 Microsoft Edge 的 Chromium N+1。
Chromium:無頭 shell
Playwright 為有頭操作提供了一個常規的 Chromium 建置版,並為無頭模式提供了一個獨立的 chromium headless shell。
如果您只在無頭 shell 中執行測試(即未指定 channel
選項),例如在 CI 上,您可以在安裝期間傳遞 --only-shell
來避免下載完整的 Chromium 瀏覽器。
# 僅在無頭模式下執行測試
playwright install --with-deps --only-shell
Chromium:新無頭模式
您可以透過使用 'chromium'
通道來選擇新的無頭模式。如官方 Chrome 文件所述:
另一方面,新無頭模式是真正的 Chrome 瀏覽器,因此更真實、可靠,並提供更多功能。這使得它更適合高精度端到端網頁應用程式測試或瀏覽器擴充套件測試。
詳情請參閱 issue #33566。
pytest test_login.py --browser-channel chromium
使用新的無頭模式,您可以在瀏覽器安裝期間使用 --no-shell
選項跳過下載無頭 shell:
# 僅在無頭模式下執行測試
playwright install --with-deps --no-shell
Google Chrome & Microsoft Edge
雖然 Playwright 可以下載並使用最新的 Chromium 建置版,但它也可以對機器上可用的品牌 Google Chrome 和 Microsoft Edge 瀏覽器進行操作(請注意,Playwright 預設不會安裝它們)。特別是,目前的 Playwright 版本將支援這些瀏覽器的穩定版和測試版通道。
可用的通道有 chrome
、msedge
、chrome-beta
、msedge-beta
、chrome-dev
、msedge-dev
、chrome-canary
、msedge-canary
。
某些企業瀏覽器政策可能會影響 Playwright 啟動和控制 Google Chrome 和 Microsoft Edge 的能力。在具有瀏覽器政策的環境中執行超出了 Playwright 專案的範圍。
Google Chrome 和 Microsoft Edge 已切換到新的無頭模式實作,該實作更接近常規的有頭模式。這與 Playwright 在執行無頭模式時預設使用的 chromium headless shell 不同,因此在某些情況下預期會有不同的行為。詳情請參閱 issue #33566。
pytest test_login.py --browser-channel msedge
或者在直接使用函式庫時,您可以在啟動瀏覽器時指定瀏覽器通道:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
# Channel can be "chrome", "msedge", "chrome-beta", "msedge-beta" or "msedge-dev".
browser = p.chromium.launch(channel="msedge")
page = browser.new_page()
page.goto("https://playwright.dev")
print(page.title())
browser.close()
安裝 Google Chrome & Microsoft Edge
如果您的機器上沒有 Google Chrome 或 Microsoft Edge,您可以使用 Playwright 命令列工具來安裝它們:
playwright install msedge
Google Chrome 或 Microsoft Edge 安裝將會安裝在您作業系統的預設全域位置,覆蓋您目前的瀏覽器安裝。
執行時加上 --help
選項以查看可安裝的瀏覽器完整清單。
何時使用 Google Chrome & Microsoft Edge,何時不使用?
預設
大部分時候使用最新 Chromium 的預設 Playwright 配置是個好主意。由於 Playwright 領先於瀏覽器的穩定版通道,它讓人安心地知道即將到來的 Google Chrome 或 Microsoft Edge 發布不會破壞您的網站。您可以早期發現問題,並在官方 Chrome 更新之前有大量時間來修復它。
回歸測試
話雖如此,測試政策通常要求對目前公開可用的瀏覽器執行回歸測試。在這種情況下,您可以選擇穩定版通道之一:"chrome"
或 "msedge"
。
媒體編解碼器
使用官方二進位檔進行測試的另一個原因是測試與媒體編解碼器相關的功能。由於各種授權考量和協議,Chromium 沒有 Google Chrome 或 Microsoft Edge 打包的所有編解碼器。如果您的網站依賴於這種編解碼器(這種情況很少見),您也會想要使用官方通道。
企業政策
Google Chrome 和 Microsoft Edge 遵守企業政策,這包括對功能的限制、網路代理、妨礙測試的強制擴充套件。因此,如果您是使用此類政策的組織的一部分,最簡單的方法是使用打包的 Chromium 進行本地測試,您仍然可以在通常不受此類限制的機器人上選擇穩定版通道。
Firefox
Playwright 的 Firefox 版本符合最新的 Firefox Stable 建置版。Playwright 不能與品牌版本的 Firefox 一起使用,因為它依賴修補程式。
請注意,某些功能的可用性在很大程度上取決於底層平台,可能會因作業系統而異。例如,可用的媒體編解碼器在 Linux、macOS 和 Windows 之間差異很大。
WebKit
Playwright 的 WebKit 衍生自最新的 WebKit 主分支來源,通常在這些更新被納入 Apple Safari 和其他基於 WebKit 的瀏覽器之前。這提供了大量的提前時間來應對潛在的瀏覽器更新問題。Playwright 不能與品牌版本的 Safari 一起使用,因為它依賴修補程式。相反,您可以使用最新的 WebKit 建置版進行測試。
請注意,某些功能的可用性在很大程度上取決於底層平台,可能會因作業系統而異。例如,可用的媒體編解碼器在 Linux、macOS 和 Windows 之間差異很大。雖然在 Linux CI 上執行 WebKit 通常是最經濟實惠的選擇,但為了獲得最接近 Safari 的體驗,您應該在 mac 上執行 WebKit,例如如果您進行影片播放測試。
在防火牆或代理伺服器後安裝
預設情況下,Playwright 從 Microsoft 的 CDN 下載瀏覽器。
有時公司維護內部代理,阻止直接存取公共資源。在這種情況下,可以設定 Playwright 透過代理伺服器下載瀏覽器。
- Bash
- PowerShell
- Batch
pip install playwright
HTTPS_PROXY=https://192.0.2.1 playwright install
$Env:HTTPS_PROXY="https://192.0.2.1"
pip install playwright
playwright install
set HTTPS_PROXY=https://192.0.2.1
pip install playwright
playwright install
如果代理的請求被自訂不受信任的憑證授權單位 (CA) 攔截,並在下載瀏覽器時產生 Error: self signed certificate in certificate chain
錯誤,您必須在安裝瀏覽器之前透過 NODE_EXTRA_CA_CERTS
環境變數設定您的自訂根憑證:
- Bash
- PowerShell
- Batch
export NODE_EXTRA_CA_CERTS="/path/to/cert.pem"
$Env:NODE_EXTRA_CA_CERTS="C:\certs\root.crt"
set NODE_EXTRA_CA_CERTS="C:\certs\root.crt"
如果您的網路連線到 Playwright 瀏覽器檔案庫的速度很慢,您可以使用 PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT
環境變數以毫秒為單位增加連線逾時:
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 playwright install
$Env:PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT="120000"
pip install playwright
playwright install
set PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000
pip install playwright
playwright install
如果您正在安裝相依套件並需要在 Linux 上使用代理,請確保以 root 使用者身分執行指令。否則,Playwright 將嘗試成為 root,並且不會將像 HTTPS_PROXY
這樣的環境變數傳遞給 Linux 套件管理器。
sudo HTTPS_PROXY=https://192.0.2.1 playwright install-deps
從 artifact repository 下載
預設情況下,Playwright 從 Microsoft 的 CDN 下載瀏覽器。
有時公司維護內部 artifact repository 來託管瀏覽器二進位檔。在這種情況下,可以使用 PLAYWRIGHT_DOWNLOAD_HOST
環境變數設定 Playwright 從自訂位置下載。
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 playwright install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
pip install playwright
playwright install
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pip install playwright
playwright install
也可以使用 PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST
、PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST
和 PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST
環境變數來使用個別瀏覽器的下載主機,這些變數優先於 PLAYWRIGHT_DOWNLOAD_HOST
。
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 playwright install
$Env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="http://203.0.113.3"
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
pip install playwright
playwright install
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pip install playwright
playwright install
使用預安裝的 Node.js
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_NODEJS_PATH="/usr/local/bin/node" playwright install
$Env:PLAYWRIGHT_NODEJS_PATH="C:\Program Files\nodejs\node.exe"
pip install playwright
playwright install
set PLAYWRIGHT_NODEJS_PATH=C:\Program Files\nodejs\node.exe
pip install playwright
playwright install
管理瀏覽器二進位檔
Playwright 將 Chromium、WebKit 和 Firefox 瀏覽器下載到特定作業系統的快取資料夾中:
- Windows:
%USERPROFILE%\AppData\Local\ms-playwright
- macOS:
~/Library/Caches/ms-playwright
- Linux:
~/.cache/ms-playwright
安裝後,這些瀏覽器將佔用幾百 MB 的磁碟空間:
du -hs ~/Library/Caches/ms-playwright/*
281M chromium-XXXXXX
187M firefox-XXXX
180M webkit-XXXX
您可以使用環境變數來覆蓋預設行為。安裝 Playwright 時,要求它將瀏覽器下載到特定位置:
- Bash
- PowerShell
- Batch
pip install playwright
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python -m playwright install
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
pip install playwright
playwright install
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
pip install playwright
playwright install
執行 Playwright 腳本時,要求它在共用位置搜尋瀏覽器。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python playwright_script.py
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
python playwright_script.py
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
python playwright_script.py
Playwright 會跟蹤需要那些瀏覽器的套件,並在您更新 Playwright 到較新版本時進行垃圾回收。
開發者可以透過在 .bashrc
中輸出 PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers
來選擇此模式。
過時瀏覽器移除
Playwright 會跟蹤使用其瀏覽器的用戶端。當沒有更多用戶端需要特定版本的瀏覽器時,該版本會從系統中刪除。這樣您可以安全地使用不同版本的 Playwright 實例,同時不會浪費不再使用的瀏覽器的磁碟空間。
要選擇退出未使用的瀏覽器移除,您可以設定 PLAYWRIGHT_SKIP_BROWSER_GC=1
環境變數。
列出所有已安裝的瀏覽器:
列印機器上所有 playwright 安裝的瀏覽器清單。
playwright install --list
移除瀏覽器
這將移除當前 Playwright 安裝的瀏覽器(chromium、firefox、webkit):
playwright uninstall
要同時移除其他 Playwright 安裝的瀏覽器,請傳遞 --all
旗標:
playwright uninstall --all