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

ブラウザ

はじめに

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

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: ヘッドレスシェル

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

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

# only running tests headlessly
playwright install --with-deps --only-shell

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

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

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

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

pytest test_login.py --browser-channel chromium

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

# only running tests headlessly
playwright 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ヘッドレスシェルとは異なるため、場合によっては異なる動作が予想されます。詳細は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.dokyumento.jp")
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はブラウザのStableチャンネルよりも先行しているため、今後のGoogle ChromeやMicrosoft Edgeのリリースによってサイトが破損することはないという安心感があります。早期に破損を検知し、公式のChromeアップデート前に修正する十分な時間があります。

回帰テスト

とはいえ、テストポリシーでは、現在一般公開されているブラウザに対して回帰テストを実行することがしばしば求められます。この場合、Stableチャンネルのいずれか、"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はプロキシサーバー経由でブラウザをダウンロードするように設定できます。

pip install playwright
HTTPS_PROXY=https://192.0.2.1 playwright 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環境変数でミリ秒単位の接続タイムアウトを増やすことができます。

pip install playwright
PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 playwright install

依存関係をインストールしており、Linuxでプロキシを使用する必要がある場合は、rootユーザーとしてコマンドを実行してください。そうしないと、Playwrightはrootになろうとし、HTTPS_PROXYのような環境変数をLinuxパッケージマネージャーに渡しません。

sudo HTTPS_PROXY=https://192.0.2.1 playwright install-deps

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

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

企業によっては、ブラウザバイナリをホストするために内部のアーティファクトリポジトリを維持している場合があります。この場合、PLAYWRIGHT_DOWNLOAD_HOST環境変数を使用して、Playwrightをカスタムの場所からダウンロードするように設定できます。

pip install playwright
PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 playwright install

PLAYWRIGHT_DOWNLOAD_HOSTよりも優先されるPLAYWRIGHT_CHROMIUM_DOWNLOAD_HOSTPLAYWRIGHT_FIREFOX_DOWNLOAD_HOSTPLAYWRIGHT_WEBKIT_DOWNLOAD_HOSTの各環境変数を使用して、ブラウザごとのダウンロードホストを設定することも可能です。

pip install playwright
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 playwright 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をインストールする際に、特定の場所にブラウザをダウンロードするよう指定します。

pip install playwright
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python -m playwright install

Playwrightスクリプトを実行する際には、共有ロケーションでブラウザを検索するよう指定します。

PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers python playwright_script.py

Playwrightはそれらのブラウザを必要とするパッケージを追跡し、Playwrightを新しいバージョンに更新すると、それらをガベージコレクションします。

開発者は、.bashrcPLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsersをエクスポートすることで、このモードをオプトインできます。

古いブラウザの削除

Playwrightは、そのブラウザを使用するクライアントを追跡します。特定のバージョンのブラウザを必要とするクライアントがいなくなると、そのバージョンはシステムから削除されます。これにより、異なるバージョンのPlaywrightインスタンスを安全に使用でき、同時に使用されなくなったブラウザのためにディスクスペースを無駄にすることもありません。

未使用のブラウザの削除をオプトアウトするには、PLAYWRIGHT_SKIP_BROWSER_GC=1環境変数を設定できます。

ブラウザのアンインストール

これにより、現在のPlaywrightインストールでインストールされているブラウザ(chromium、firefox、webkit)が削除されます。

playwright uninstall

他のPlaywrightインストールでインストールされているブラウザも削除するには、--allフラグを渡します。

playwright uninstall --all