メインコンテンツへスキップ

ブラウザ

はじめに

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 と組み合わせることで、ブラウザと OS の依存関係を単一のコマンドでインストールすることも可能です。

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 は数週間後に Google Chrome および Microsoft Edge でリリースされる Chromium N+1 をすでにサポートしています。

Chromium: ヘッドレスシェル

Playwright は、ヘッド操作用の通常の Chromium ビルドと、ヘッドレスモード用の個別の chromium headless shell を同梱しています。

CI などでヘッドレスシェルでのみテストを実行する場合 (つまり、channel オプションが指定されていない場合)、インストール中に --only-shell を渡すことで、フル Chromium ブラウザのダウンロードを回避できます。

# only running tests headlessly
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps --only-shell"

Chromium: 新しいヘッドレスモード

'chromium' チャンネルを使用することで、新しいヘッドレスモードを選択できます。公式の Chrome ドキュメントで説明されているように

一方、新しいヘッドレスは実際の Chrome ブラウザであるため、より本物らしく、信頼性が高く、より多くの機能を提供します。これにより、高精度のエンドツーエンド Web アプリケーションテストやブラウザ拡張機能テストに適しています。

詳細については、issue #33566 を参照してください。

import com.microsoft.playwright.*;

public class Example {
public static void main(String[] args) {
try (Playwright playwright = Playwright.create()) {
Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setChannel("chromium"));
Page page = browser.newPage();
// ...
}
}
}

新しいヘッドレスモードでは、--no-shell オプションを使用することで、ブラウザのインストール中にヘッドレスシェルのダウンロードをスキップできます。

# only running tests headlessly
mvn exec:java -e -D exec.mainClass=com.microsoft.playwright.CLI -D exec.args="install --with-deps --no-shell"

Google Chrome & Microsoft Edge

Playwright は最新の Chromium ビルドをダウンロードして使用できますが、マシン上で利用可能なブランドの Google Chrome および Microsoft Edge ブラウザに対して動作できます (Playwright はデフォルトではインストールしないことに注意してください)。特に、現在の Playwright バージョンは、これらのブラウザの Stable および Beta チャンネルをサポートします。

利用可能なチャンネルは、chromemsedgechrome-betamsedge-betachrome-devmsedge-devchrome-canarymsedge-canary です。

警告

特定のエンタープライズブラウザポリシーは、Playwright が Google Chrome および Microsoft Edge を起動および制御する能力に影響を与える可能性があります。ブラウザポリシーのある環境での実行は、Playwright プロジェクトの範囲外です。

警告

Google Chrome および Microsoft Edge は、通常のヘッドモードに近い 新しいヘッドレスモード 実装に切り替えました。これは、ヘッドレスで実行する場合に Playwright でデフォルトで使用される chromium headless shell とは異なるため、場合によっては異なる動作が予想されます。詳細については、issue #33566 を参照してください。

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"
警告

Google Chrome または Microsoft Edge のインストールは、オペレーティングシステムのデフォルトのグローバルロケーションにインストールされ、現在のブラウザのインストールを上書きします。

インストールできるブラウザの完全なリストを表示するには、--help オプションを指定して実行してください。

Google Chrome & Microsoft Edge を使用する場合と使用しない場合はいつですか?

デフォルト

最新の Chromium を使用したデフォルトの Playwright 構成を使用することは、ほとんどの場合に良い考えです。Playwright はブラウザの Stable チャンネルよりも先行しているため、今後の Google Chrome または Microsoft Edge のリリースでサイトが壊れる心配がありません。公式の Chrome アップデートの前に、早期に破損を検出し、修正する時間が十分にあります。

リグレッションテスト

そうは言っても、テストポリシーでは、現在公開されているブラウザに対してリグレッションテストを実行する必要があることがよくあります。この場合、安定版チャンネルである "chrome" または "msedge" のいずれかを選択できます。

メディアコーデック

公式バイナリを使用してテストするもう 1 つの理由は、メディアコーデックに関連する機能をテストすることです。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 に最も近いエクスペリエンスを得るには、たとえばビデオ再生を行う場合は、macOS で 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"

アーティファクトリポジトリからのダウンロード

デフォルトでは、Playwright は Microsoft の CDN からブラウザをダウンロードします。

企業によっては、ブラウザバイナリをホストするために内部アーティファクトリポジトリを維持している場合があります。この場合、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_HOST、および PLAYWRIGHT_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 ブラウザを OS 固有のキャッシュフォルダーにダウンロードします。

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

これらのブラウザは、インストールすると数百メガバイトのディスク容量を消費します。

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 を新しいバージョンに更新すると、それらをガベージコレクションします。

開発者は、.bashrcPLAYWRIGHT_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"