1. 位置づけと共通する比較軸
| 比較軸 | Playwright | Selenium | Puppeteer |
|---|---|---|---|
| 主な想定用途 | E2E テスト/スクレイピング | E2E テスト(業界標準)/実機・クラウド連携 | E2E テスト/スクレイピング |
| 対応言語 | Python・Java・JS/TS・C# など5 言語zenrows.com | Java・Python・JS・C#・Ruby ほか多数zenrows.com | 公式は JS/TS のみ(Pyppeteer は非公式)zenrows.com |
| 対応ブラウザ | Chromium / Firefox / WebKit(三大エンジン) | Chrome・Firefox・Edge・Safari・IE ほか実ブラウザ全般zenrows.com | 基本 Chromium(Firefox は実験的)zenrows.com |
| プロトコル | ネイティブ CDP/WebKit & Gecko プロトコル | W3C WebDriver(4.x 以降は BiDi 拡充)selenium.dev | CDP, 一部 BiDi |
| インストール | npm create playwright@latest → npx playwright install でブラウザも自動取得playwright.devplaywright.dev |
pip install selenium 等 → Selenium Manager がドライバとブラウザを自動解決selenium.dev |
npm i puppeteer で Chrome for Testing を自動取得pptr.dev |
| デバッグ支援 | Trace Viewer/HTML Reporter 1.53 で強化playwright.dev | IDE 拡張・BiDi のログ/ネットワークイベント | DevTools を直接操作 |
| 自動待機 | 標準で auto-wait、再試行内蔵 | 明示的/暗黙的 wait が必要 | 部分的(waitFor*) |
| パフォーマンス | 同一条件ベンチで Selenium より高速zenrows.com | Playwright より遅い傾向 | Playwright と同程度(ブラウザが1種なので軽量) |
| 実機テスト | エミュレーションのみ | Selenium Grid + Mobile(Appium) | Chrome DevTools のモバイルエミュ |
2. Playwright と Selenium の詳細比較
2-1. API と学習コスト
Playwright は各ブラウザで同一メソッドが働く設計で学習しやすく、page.getByRole() など最新セレクタ API も統一されています。一方 Selenium は汎用性の代償としてブラウザ固有のオプションや待機コードが増えがちです。ZenRows の比較でも「Playwright はより簡潔」と評価されていますzenrows.com。
2-2. スピードと安定性
CDP/Gecko/WebKit のネイティブ通信によりオーバーヘッドが少なく、100 回操作ベンチマークで平均実行時間が Selenium を上回る結果が報告されていますzenrows.com。auto-wait によるフレーク減も高速化に寄与します。
2-3. デバッグ機能
Playwright 1.53 では Trace Viewer にステップビューが追加され、HTML Reporter のタイトル設定や locator 描画 (locator.describe) が可能になりましたplaywright.dev。Selenium 4 系は WebDriver BiDi でコンソール・ネットワークイベントのストリーミングが行えますが、UI 可視化には別ツールが必要ですselenium.dev。
2-4. 環境構築
-
Playwright – プロジェクト作成時に
playwright installを実行すると Chromium/Firefox/WebKit を一括ダウンロードし、CI でも再現性を確保できますplaywright.dev。 -
Selenium – 4.11 以降に同梱された Selenium Manager がドライバやブラウザ(CfT Chrome、Edge 等)を自動取得・キャッシュし、従来の WebDriverManager 相当の設定が不要になりましたselenium.dev。Docker Selenium では Multi-Arch Image も公式提供されていますselenium.dev。
3. Playwright と Puppeteer の詳細比較
3-1. 言語とブラウザ範囲
Playwright は Python/Java/C# を含む 5 言語を公式サポート、ブラウザも 3 エンジンを同一 API で扱えます。Puppeteer は JavaScript/TypeScript 前提・Chromium 専用で、Firefox サポートは実験段階ですzenrows.com。
3-2. API・機能差
両者とも CDP ベースですが、Playwright には 複数ブラウザコンテキスト・ネットワークルート・モダン locator API・auto-wait が最初から実装されています。Puppeteer では一部を自前実装する必要があります。
3-3. セットアップ手順
-
Puppeteer –
npm install puppeteerで Chrome for Testing (~170–280 MB) が自動 DL されますpptr.dev。キャッシュ先は~/.cache/puppeteer。 -
Playwright – プロジェクト作成時に対象ブラウザを選択して取得でき、
npx playwright install --listでバージョンを確認可能ですplaywright.dev。
3-4. パフォーマンス & デバッグ
Playwright は Puppeteer をベースに Microsoft が再設計した経緯があり、クロスブラウザ対応・trace viewer などデバッグ機能が先行しています。一方 Puppeteer は Chromium 固有機能(Chrome 拡張テストや最新 CDP 機能)を最速で取り込める利点があります。
4. 選択ガイドラインまとめ
| シチュエーション | 推奨ツール |
|---|---|
| 複数ブラウザ(Chrome/Firefox/Safari)を同一 API でテストしたい | Playwright |
| 既存 CI/クラウド/実機(Appium)連携を前提にレガシー IE も含めたい | Selenium |
| Node.js だけで軽量に Chrome 向けスクリプトを組みたい/拡張機能をテストしたい | Puppeteer |
| 高速・安定・自動待機を重視しつつ Python/Java/C# でも書きたい | Playwright |
| 大規模既存資産・コミュニティ規模を活かして保守したい | Selenium |
ポイント
Playwright は「スピードと一貫性」、Selenium は「汎用性と実績」、Puppeteer は「JS/Chromium 特化の軽量さ」が強み。
環境構築の手間は Playwright ≒ Puppeteer < Selenium(ただし Selenium Manager で大幅に簡素化)。
デバッグや CI での再現性を重視するなら Playwright の Trace Viewer/HTML Reporter が便利。
用途・言語・対象ブラウザ・チームスキルを踏まえて最適なツールを選定してください。
ChatGPT4o 生成日:2025/06/22