ブラウザ
概要
Playwright の各バージョンは、動作するために特定のバージョンのブラウザバイナリを必要とします。これらのブラウザをインストールするには、Playwright CLI を使用する必要があります。
Playwright はリリースごとに、サポートするブラウザのバージョンを更新し、常に最新の Playwright が最新のブラウザをサポートするようにします。つまり、Playwright を更新するたびに、install
CLI コマンドを再実行する必要がある場合があります。
ブラウザのインストール
Playwright は、サポートされているブラウザをインストールできます。引数なしでコマンドを実行すると、デフォルトのブラウザがインストールされます。
pwsh bin/Debug/netX/playwright.ps1 install
引数を指定して特定のブラウザをインストールすることもできます
pwsh bin/Debug/netX/playwright.ps1 install webkit
サポートされているすべてのブラウザを見る
pwsh bin/Debug/netX/playwright.ps1 install --help
API 経由でブラウザをインストールする
.NET API 経由でコマンドラインツールコマンドを実行できます
var exitCode = Microsoft.Playwright.Program.Main(new[] {"install"});
if (exitCode != 0)
{
throw new Exception($"Playwright exited with code {exitCode}");
}
システム依存関係のインストール
システム依存関係は自動的にインストールできます。これは CI 環境に役立ちます。
pwsh bin/Debug/netX/playwright.ps1 install-deps
引数としてブラウザを渡すことで、単一のブラウザの依存関係をインストールすることもできます
pwsh bin/Debug/netX/playwright.ps1 install-deps chromium
install-deps
を install
と組み合わせて、ブラウザと OS の依存関係を単一のコマンドでインストールすることも可能です。
pwsh bin/Debug/netX/playwright.ps1 install --with-deps chromium
公式にサポートされているオペレーティングシステムについては、システム要件 を参照してください。
ブラウザの設定
Playwright は、Chromium、WebKit、Firefox ブラウザだけでなく、Google Chrome や Microsoft Edge などのブランドブラウザでもテストを実行できます。また、エミュレートされたタブレットやモバイルデバイスでも実行できます。選択されたデスクトップ、タブレット、モバイルデバイスの完全なリストについては、デバイスパラメータのレジストリを参照してください。
異なるブラウザでテストを実行する
特定のブラウザでテストを実行する
dotnet test -- Playwright.BrowserName=webkit
複数のブラウザまたは構成でテストを実行するには、dotnet test
コマンドを複数回呼び出す必要があります。BROWSER
環境変数を指定するか、runsettings ファイルを介して Playwright.BrowserName
を設定できます
dotnet test --settings:chromium.runsettings
dotnet test --settings:firefox.runsettings
dotnet test --settings:webkit.runsettings
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
</Playwright>
</RunSettings>
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
pwsh bin/Debug/netX/playwright.ps1 install --with-deps --only-shell
Chromium: 新しいヘッドレスモード
'chromium'
チャネルを使用すると、新しいヘッドレスモードをオプトインできます。公式 Chrome ドキュメントにあるように
一方、新しいヘッドレスは実際の Chrome ブラウザであり、より本物で信頼性が高く、より多くの機能を提供します。これにより、高精度のエンドツーエンド Web アプリケーションテストやブラウザ拡張機能テストにより適しています。
詳細については、issue #33566 を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>chromium</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=chromium
新しいヘッドレスモードでは、--no-shell
オプションを使用することで、ブラウザのインストール中にヘッドレスシェルのダウンロードをスキップできます
# only running tests headlessly
pwsh bin/Debug/netX/playwright.ps1 install --with-deps --no-shell
Google Chrome & Microsoft Edge
Playwright は最新の Chromium ビルドをダウンロードして使用できますが、マシン上で利用可能なブランドの Google Chrome および Microsoft Edge ブラウザに対して動作できます (Playwright はデフォルトではこれらをインストールしないことに注意してください)。特に、現在の Playwright バージョンは、これらのブラウザの Stable および Beta チャネルをサポートします。
利用可能なチャネルは、chrome
、msedge
、chrome-beta
、msedge-beta
、chrome-dev
、msedge-dev
、chrome-canary
、msedge-canary
です。
特定のエンタープライズブラウザポリシーは、Google Chrome および Microsoft Edge を起動および制御する Playwright の能力に影響を与える可能性があります。ブラウザポリシーのある環境での実行は、Playwright プロジェクトの範囲外です。
Google Chrome と Microsoft Edge は、通常のヘッド付きモードに近い 新しいヘッドレスモード実装に切り替えました。これは、ヘッドレスで実行する場合に Playwright でデフォルトで使用される chromium headless shell とは異なるため、場合によっては異なる動作が予想されます。詳細については、issue #33566 を参照してください。
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<Playwright>
<BrowserName>chromium</BrowserName>
<LaunchOptions>
<Channel>msedge</Channel>
</LaunchOptions>
</Playwright>
</RunSettings>
dotnet test -- Playwright.BrowserName=chromium Playwright.LaunchOptions.Channel=msedge
Google Chrome & Microsoft Edge のインストール
Google Chrome または Microsoft Edge がマシンで使用できない場合は、Playwright コマンドラインツールを使用してインストールできます
pwsh bin/Debug/netX/playwright.ps1 install msedge
Google Chrome または Microsoft Edge のインストールは、オペレーティングシステムのデフォルトのグローバルロケーションにインストールされ、現在のブラウザのインストールを上書きします。
インストールできるブラウザの完全なリストを表示するには、--help
オプションを指定して実行します。
Google Chrome & Microsoft Edge を使用する場合と使用しない場合はいつですか?
デフォルト
最新の Chromium を使用したデフォルトの Playwright 構成を使用することは、ほとんどの場合に良いアイデアです。Playwright はブラウザの Stable チャネルよりも先行しているため、今後の Google Chrome または Microsoft Edge のリリースによってサイトが壊れることはないという安心感を与えてくれます。公式の Chrome アップデートの前に、早期に破損をキャッチし、修正する時間を十分に確保できます。
リグレッションテスト
そうは言っても、テストポリシーでは、現在公開されているブラウザに対してリグレッションテストを実行する必要があることがよくあります。この場合、安定チャネルの 1 つである "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 はプロキシサーバー経由でブラウザをダウンロードするように構成できます。
- Bash
- PowerShell
- Batch
HTTPS_PROXY=https://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:HTTPS_PROXY="https://192.0.2.1"
pwsh bin/Debug/netX/playwright.ps1 install
set HTTPS_PROXY=https://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 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
PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT="120000"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT=120000
pwsh bin/Debug/netX/playwright.ps1 install
依存関係をインストールしていて、Linux でプロキシを使用する必要がある場合は、必ず root ユーザーとしてコマンドを実行してください。そうしないと、Playwright は root になろうとし、HTTPS_PROXY
などの環境変数を Linux パッケージマネージャーに渡しません。
sudo HTTPS_PROXY=https://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install-deps
成果物リポジトリからのダウンロード
デフォルトでは、Playwright は Microsoft の CDN からブラウザをダウンロードします。
企業によっては、ブラウザバイナリをホストするために内部成果物リポジトリを維持している場合があります。この場合、Playwright は PLAYWRIGHT_DOWNLOAD_HOST
環境変数を使用してカスタムロケーションからダウンロードするように構成できます。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 install
PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST
、PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST
、PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST
環境変数を使用して、ブラウザごとのダウンロードホストを使用することもできます。これらの環境変数は PLAYWRIGHT_DOWNLOAD_HOST
よりも優先されます。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3 PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1 pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_DOWNLOAD_HOST="http://192.0.2.1"
$Env:PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST="http://203.0.113.3"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=http://203.0.113.3
set PLAYWRIGHT_DOWNLOAD_HOST=http://192.0.2.1
pwsh bin/Debug/netX/playwright.ps1 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 をインストールするときに、特定の場所にブラウザをダウンロードするように指示します
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers pwsh bin/Debug/netX/playwright.ps1 install
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
pwsh bin/Debug/netX/playwright.ps1 install
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
pwsh bin/Debug/netX/playwright.ps1 install
Playwright スクリプトを実行するときに、共有ロケーションでブラウザを検索するように指示します。
- Bash
- PowerShell
- Batch
PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers dotnet test
$Env:PLAYWRIGHT_BROWSERS_PATH="$Env:USERPROFILE\pw-browsers"
dotnet test
set PLAYWRIGHT_BROWSERS_PATH=%USERPROFILE%\pw-browsers
dotnet test
Playwright は、それらのブラウザを必要とするパッケージを追跡し、Playwright を新しいバージョンに更新すると、それらをガベージコレクションします。
開発者は、.bashrc
で PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers
をエクスポートすることで、このモードをオプトインできます。
古いブラウザの削除
Playwright は、ブラウザを使用するクライアントを追跡します。特定のバージョンのブラウザを必要とするクライアントがなくなった場合、そのバージョンはシステムから削除されます。そうすることで、異なるバージョンの Playwright インスタンスを安全に使用でき、同時に、使用されなくなったブラウザのディスク容量を無駄にすることはありません。
未使用のブラウザの削除をオプトアウトするには、PLAYWRIGHT_SKIP_BROWSER_GC=1
環境変数を設定できます。
ブラウザのアンインストール
これにより、現在の Playwright インストールのブラウザ (chromium、firefox、webkit) が削除されます
pwsh bin/Debug/netX/playwright.ps1 uninstall
他の Playwright インストールのブラウザも削除するには、--all
フラグを渡します
pwsh bin/Debug/netX/playwright.ps1 uninstall --all