Skip to main content

瀏覽器

簡介

每個版本的 Playwright 需要特定版本的瀏覽器二進位檔來操作。你將需要使用 Playwright CLI 來安裝這些瀏覽器。

隨著每次發佈,Playwright 都會更新其支援的瀏覽器版本,因此最新的 Playwright 將隨時支援最新的瀏覽器。這意味著每次更新 Playwright 時,您可能需要重新執行 install CLI 命令。

安裝瀏覽器

Playwright 可以安裝支援的瀏覽器。執行該命令而不帶參數將安裝預設的瀏覽器。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

您也可以通過提供參數來安裝特定的瀏覽器:

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install webkit"

查看所有支援的瀏覽器:

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --help"

安裝系統相依套件

系統相依套件可以自動安裝。這對於 CI 環境很有用。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps"

您也可以通過將其作為參數傳遞來安裝單個瀏覽器的相依套件:

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps chromium"

也可以將 install-depsinstall 結合,這樣瀏覽器和作業系統的相依性就可以用一個指令安裝。

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps chromium"

請參閱系統需求以了解官方支援的作業系統。

設定瀏覽器

Playwright 可以在 Chromium、WebKit 和 Firefox 瀏覽器以及 Google Chrome 和 Microsoft Edge 等品牌瀏覽器上執行測試。它還可以在模擬的平板電腦和行動裝置上執行。請參閱裝置參數註冊表以獲取選定桌面、平板電腦和行動裝置的完整清單。

在不同瀏覽器上執行測試

在特定瀏覽器上執行測試:

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
// Launch chromium, firefox or webkit.
Browser browser = playwright.chromium().launch();
Page page = browser.newPage();
// ...
}
}
}

在多個瀏覽器上執行測試,並根據環境變數 BROWSER 進行設定:

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = null;
String browserName = System.getenv("BROWSER");
if (browserName.equals("chromium")) {
browser = playwright.chromium().launch();
} else if (browserName.equals("firefox")) {
browser = playwright.firefox().launch();
} else if (browserName.equals("webkit")) {
browser = playwright.webkit().launch();
}
Page page = browser.newPage();
// ...
}
}
}

Chromium

對於 Google Chrome、Microsoft Edge 和其他基於 Chromium 的瀏覽器,Playwright 預設使用開放原始碼的 Chromium 構建。由於 Chromium 項目領先於品牌瀏覽器,當世界使用 Google Chrome N 時,Playwright 已經支持 Chromium N+1,這將在幾週後在 Google Chrome 和 Microsoft Edge 中發佈。

Google Chrome & Microsoft Edge

雖然 Playwright 可以下載並使用最新的 Chromium 版本,但它也可以在機器上運行已安裝的 Google Chrome 和 Microsoft Edge 瀏覽器(請注意,Playwright 預設不會安裝它們)。特別是,目前的 Playwright 版本將支援這些瀏覽器的穩定版和 Beta 版頻道。

可用的頻道有 chromemsedgechrome-betamsedge-betamsedge-dev

warning

某些企業瀏覽器政策可能會影響 Playwright 啟動和控制 Google Chrome 和 Microsoft Edge 的能力。在具有瀏覽器政策的環境中執行不在 Playwright 專案的範圍內。

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
// Channel can be "chrome", "msedge", "chrome-beta", "msedge-beta" or "msedge-dev".
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("msedge"));
Page page = browser.newPage();
// ...
}
}
}

安裝 Google Chrome & Microsoft Edge

如果 Google Chrome 或 Microsoft Edge 無法在您的機器上使用,您可以使用 Playwright 命令列工具來安裝它們:

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install msedge"
warning

Google Chrome 或 Microsoft Edge 安裝將會安裝在作業系統的預設全域位置,覆蓋您當前的瀏覽器安裝。

使用 --help 選項來查看可安裝的瀏覽器完整列表。

什麼時候使用 Google Chrome 和 Microsoft Edge,什麼時候不使用?

預設

使用預設的 Playwright 設定和最新的 Chromium 大多數時候是個好主意。由於 Playwright 走在瀏覽器的穩定版本之前,這讓人放心,未來的 Google Chrome 或 Microsoft Edge 發佈不會破壞你的网站。你可以及早發現問題,並在官方 Chrome 更新之前有充足的時間修復。

回歸測試

話雖如此,測試策略通常要求對當前公開可用的瀏覽器進行回歸測試。在這種情況下,你可以選擇加入其中一個穩定的頻道,"chrome""msedge"

媒體編解碼器

另一個使用官方二進位檔進行測試的原因是測試與媒體編解碼器相關的功能。由於各種許可考量和協議,Chromium 並沒有 Google Chrome 或 Microsoft Edge 捆綁的所有編解碼器。如果您的網站依賴這種編解碼器(這種情況很少見),您也會想要使用官方頻道。

企業政策

Google Chrome 和 Microsoft Edge 遵循企業政策,其中包括對功能的限制、網路代理、強制擴充功能,這些都會妨礙測試。因此,如果您是使用此類政策的組織的一部分,最簡單的方法是使用捆綁的 Chromium 進行本地測試,您仍然可以選擇在通常沒有此類限制的機器人上使用穩定通道。

Firefox

Playwright 的 Firefox 版本符合最近的 Firefox Stable build。Playwright 無法與品牌版本的 Firefox 一起使用,因為它依賴於補丁。

WebKit

Playwright 的 WebKit 源自最新的 WebKit 主分支來源,通常在這些更新被合併到 Apple Safari 和其他基於 WebKit 的瀏覽器之前。這為潛在的瀏覽器更新問題提供了大量的反應時間。由於依賴於補丁,Playwright 無法與品牌版本的 Safari 一起使用。相反,你可以使用最新的 WebKit 版本進行測試。請注意,某些功能的可用性可能會因為高度依賴底層平台而在不同的作業系統之間有所不同。

在防火牆或代理伺服器後安裝

預設情況下,Playwright 會從 Microsoft 的 CDN 下載瀏覽器。

有時公司會維護一個內部代理來阻止直接訪問公共資源。在這種情況下,可以配置 Playwright 通過代理伺服器下載瀏覽器。

HTTPS_PROXY=https://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

如果代理的請求被攔截並使用自定義的不受信任證書授權機構(CA),並且在下載瀏覽器時產生 Error: self signed certificate in certificate chain,則必須在安裝瀏覽器之前通過 NODE_EXTRA_CA_CERTS 環境變數設置自定義根證書:

export NODE_EXTRA_CA_CERTS="/path/to/cert.pem"

如果您的網路連接到 Playwright 瀏覽器檔案的速度很慢,您可以使用 PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT 環境變數以毫秒為單位增加連接超時時間:

PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

如果你正在安裝相依套件並且需要在 Linux 上使用代理,請確保以 root 使用者執行命令。否則,Playwright 將嘗試成為 root 並且不會將 HTTPS_PROXY 等環境變數傳遞給 linux 套件管理器。

sudo HTTPS_PROXY=https://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install-deps"

從 artifact repository 下載

預設情況下,Playwright 會從 Microsoft 的 CDN 下載瀏覽器。

有時公司會維護一個內部 artifact 儲存庫來存放瀏覽器二進位檔。在這種情況下,可以配置 Playwright 使用 PLAYWRIGHT_DOWNLOAD_HOST 環境變數從自訂位置下載。

PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

也可以使用每個瀏覽器的下載主機,使用 PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOSTPLAYWRIGHT_FIREFOX_DOWNLOAD_HOSTPLAYWRIGHT_WEBKIT_DOWNLOAD_HOST 環境變數,這些變數優先於 PLAYWRIGHT_DOWNLOAD_HOST

PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

管理瀏覽器二進位檔

Playwright 下載 Chromium、WebKit 和 Firefox 瀏覽器到特定作業系統的快取資料夾:

  • %USERPROFILE%\AppData\Local\ms-playwright 在 Windows
  • ~/Library/Caches/ms-playwright 在 macOS
  • ~/.cache/ms-playwright 在 Linux

這些瀏覽器安裝後將佔用幾百兆位元組的磁碟空間:

du -hs ~/Library/Caches/ms-playwright/*
281M chromium-XXXXXX
187M firefox-XXXX
180M webkit-XXXX

您可以使用環境變數覆蓋預設行為。安裝 Playwright 時,請要求它將瀏覽器下載到特定位置:

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install"

當執行 Playwright 程式碼時,請它在共享位置搜尋瀏覽器。

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers mvn test

Playwright 會跟蹤需要那些瀏覽器的套件,並在你更新 Playwright 到較新版本時進行垃圾回收。

note

開發者可以通過在 .bashrc 中輸出 PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers 來選擇此模式。

跳過瀏覽器下載

在某些情況下,因為瀏覽器二進位檔是分開管理的,所以希望完全避免瀏覽器下載。

在安裝之前,這可以通過設定 PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD 變數來完成。

PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 mvn test

過時瀏覽器移除

Playwright 會追蹤使用其瀏覽器的客戶端。當不再有客戶端需要特定版本的瀏覽器時,該版本會從系統中刪除。這樣你可以安全地使用不同版本的 Playwright 實例,同時不會浪費磁碟空間來存放不再使用的瀏覽器。

要選擇退出未使用瀏覽器的移除,你可以設定 PLAYWRIGHT_SKIP_BROWSER_GC=1 環境變數。

移除瀏覽器

這將移除當前 Playwright 安裝的瀏覽器 (chromium, firefox, webkit):

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="uninstall"

要移除其他 Playwright 安裝的瀏覽器,請傳遞 --all 旗標:

mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="uninstall --all"