フレームワーク比較 · 2026

Selenium vs Puppeteer

SeleniumとPuppeteerは、異なる問題を解決します。一方はクロスブラウザのW3C WebDriver標準であり、もう一方は高速なChrome特化の自動化ライブラリです。このガイドでは、プロトコル、対応言語、ブラウザカバレッジ、速度、ユースケースの各観点で両者を徹底的に比較し、コードサンプルと5分で実践できる結論を交えてお届けします。

ブラウザとデバイス
6100+
クラウド並列処理
100×
稼働時間SLA
99.99%

世界で最も革新的な企業のいくつかから信頼されています

30秒で答える

どちらを選ぶべきでしょうか?

Selenium Seleniumを選ぶべきなのは…

Chrome、Firefox、Safari、Edge、Internet Explorerにわたる本物のクロスブラウザテスト、複数の言語、またはAppium経由での実際のモバイルデバイスを、W3C標準プロトコル上で必要とする場合。

Puppeteer Puppeteerを選ぶべき理由は…

高速なエンドツーエンドテスト、スクレイピング、PDF生成、パフォーマンストレースのためにNode.jsからChromeまたはChromiumを自動化し、Safari、Internet Explorer、その他の言語を必要としない場合。

両方選ぶべき場合…

高速なChrome専用チェックにはPuppeteerを、幅広いクロスブラウザカバレッジにはSeleniumを使いたい場合。TestingBotは両方を同じグリッド上で、並列に、1つのダッシュボードで実行します。

背景

SeleniumとPuppeteerとは何ですか?

2つのブラウザ自動化ツール、それぞれ異なる目標。一方はクロスブラウザ制御を標準化し、もう一方はChromeを高速に操作します。

Selenium

Selenium

2004年リリース · オープンソース · Apache 2.0

Seleniumは、元祖ブラウザ自動化フレームワークであり、W3C WebDriver標準の基盤となっています。Selenium WebDriverは、ベンダー提供のドライバ(chromedriver、geckodriver、safaridriver、edgedriver)を介して、同一のワイヤプロトコルを使用してあらゆるブラウザを外部から操作します。

20年にわたるエコシステムの成熟により、主要なすべての言語に対応したバインディング、IDEとの高度な統合、成熟したPage Objectパターン、そして同じプロトコル上に構築されたAppiumを介した実際のモバイルデバイステストが実現しました。

  • Java / Python / C# / Ruby / JavaScript / Kotlin
  • W3C WebDriver標準、すべてのブラウザで動作します
  • Chrome、Firefox、Safari、Edge、IE 11 · Appium経由での実際のモバイル
Puppeteer

Puppeteer

リリース日:2017年 · Google · Apache 2.0

Puppeteerは、Google Chromeチームが開発したNode.jsライブラリで、Chrome DevToolsプロトコルを介してChrome、Chromium、Edgeを制御します。高速なエンドツーエンドテスト、Webスクレイピング、PDF生成、パフォーマンストレースを支えています。

WebDriverではなくDevToolsプロトコルを直接やり取りするため、Puppeteerは高速であり、ネットワーク、コンソール、トレースへの一流のアクセスを備えています。同じ設計が、ChromiumベースのブラウザとJavaScriptエコシステムへの依存ももたらします。

  • JavaScriptとTypeScript(Node.js)
  • Chrome DevToolsプロトコル、ネットワークとトレースへのアクセス
  • Chrome、Chromium、Edge · Firefoxは実験的、Safari/IEは非対応
直接対決

Selenium vs Puppeteer:並べて比較

CI での選択、移行、または両方の実行において重要なあらゆる側面において。

Selenium versus Puppeteer feature comparison
項目 Selenium Puppeteer
First release 2004 2017
Maintained by Open-source community + W3C Google (Chrome team)
Protocol W3C WebDriver Chrome DevTools Protocol
Languages Java, Python, C#, Ruby, JS, Kotlin JavaScript / TypeScript
Browsers Chrome, Firefox, Safari, Edge, IE 11 Chrome, Chromium, Edge
Firefox / Safari Both supported Firefox experimental, no Safari
Mobile testing Real iOS + Android via Appium None
Speed Mature, predictable Faster on Chrome (direct CDP)
Network interception BiDi (Selenium 4) or proxy First-class (CDP)
Scraping / PDF / tracing Possible First-class
Test runner Bring your own (JUnit, pytest) Bring your own (Jest, Mocha)
Standard W3C WebDriver standard Chrome-specific protocol
Parallel execution Selenium Grid Worker-based (Jest, Mocha)
Ecosystem maturity 20 years of integrations Strong since 2017
Free for open source on TestingBot

機能に関する注記は、2026年時点のSelenium 4.xおよびPuppeteer 23.xを反映しています。両方ともTestingBotのクラウド上で動作し、SeleniumはWebDriverハブ経由で、PuppeteerはbrowserWSEndpoint接続経由で実行されます。

両方で同じテストを実施

ログインし、結果を検証する

明示的な待機(Selenium)を使用したログインフローと、DevToolsプロトコルのセッション(Puppeteer)を使用したログインフローを比較します。どちらも同じTestingBotグリッド上で実行されます。

Selenium + Python test_login.py
# Driver points at TestingBot remote URL
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

def test_login_redirects_to_dashboard(driver):
    driver.get('https://app.example.com/login')

    driver.find_element(By.NAME, 'username').send_keys('jane@example.com')
    driver.find_element(By.NAME, 'password').send_keys('••••••••')
    driver.find_element(By.CSS_SELECTOR, 'button[type=submit]').click()

    # explicit wait
    WebDriverWait(driver, 10).until(EC.url_contains('/dashboard'))
    welcome = driver.find_element(By.TAG_NAME, 'h1')
    assert 'Welcome, Jane' in welcome.text
Puppeteer + Node.js login.test.js
// connect to TestingBot over the DevTools protocol
import puppeteer from 'puppeteer-core';

const caps = { key: 'KEY', secret: 'SECRET', browserName: 'chrome', browserVersion: 'latest' };
const browser = await puppeteer.connect({
  browserWSEndpoint: `wss://cloud.testingbot.com/puppeteer?capabilities=${encodeURIComponent(JSON.stringify(caps))}`,
});
const page = await browser.newPage();
await page.goto('https://app.example.com/login');
await page.type('#username', 'jane@example.com');
await page.type('#password', '••••••••');
await page.click('button[type=submit]');
await page.waitForSelector('h1');

SeleniumのテストはWebDriverハブに接続し、PuppeteerのスクリプトはbrowserWSEndpoint経由で接続します。どちらも同じTestingBotダッシュボードに表示されます。

意思決定マトリックス

どちらを選ぶかは

Seleniumを選択する場合

  • Chromiumだけでなく、Safari、Internet Explorer 11、Edgeを含む真のクロスブラウザカバレッジが必要な場合。
  • チームがJava、C#、Ruby、またはPythonで開発を行っており、完全なクライアントライブラリの互換性を求めている場合。
  • 実際のiOSおよびAndroidデバイスをテストする場合。Appiumは、同じWebDriverプロトコルを再利用します。
  • Chrome固有のものではなく、ベンダー中立のW3C標準プロトコルを求めている場合。
  • 書き直したくない成熟したPage ObjectライブラリやBDDフレームワーク(Cucumber、SpecFlow)をお持ちの場合。
TestingBotでSeleniumを実行する

Puppeteerを選ぶとき

  • Chrome、Chromium、またはEdgeのみを自動化すればよく、可能な限り高速な実行を求めている場合。
  • チームがNode.js優先で、JavaScriptまたはTypeScriptのAPIを求めている場合。
  • テストと並行して、Webスクレイピング、PDF生成、スクリーンショット、パフォーマンストレースを行う場合。
  • ネットワーク、コンソール、CDPイベントへのDevToolsプロトコルの直接アクセスを求めている場合。
  • Safari、Internet Explorer、実際のモバイルデバイス、またはJavaScript以外の言語を必要としない場合。
TestingBotでPuppeteerを実行する
TestingBotは両方をサポートしています

どちらかを選ぶのはやめて、両方を同じグリッドで実行しよう

SeleniumをWebDriverハブに指定し、PuppeteerをそのbrowserWSEndpoint経由で接続します。テストは同じ6100+ブラウザとデバイス、同じダッシュボード、同じ並列スロット、同じEUデータ所在地を共有します。

  • 同じ認証、同じプロジェクト、同じ請求
  • 両ツールのテスト履歴を並べて表示
  • オープンソースであれば無料、両方のツール
testingbot.com / run both
# Selenium
webdriver.Remote(
command_executor='https://hub.testingbot.com/wd/hub'
)
// Puppeteer
puppeteer.connect({
browserWSEndpoint:
'wss://cloud.testingbot.com/puppeteer'
})
よくある質問

よくある質問

チームがこれらのツールを選択する前、あるいは組み合わせる前に自問する質問。

PuppeteerはSeleniumより速いですか?

通常はそうです、Chromeでは。PuppeteerはChrome DevToolsプロトコルを直接やり取りし、WebDriverプロトコルのHTTPラウンドトリップを回避するため、Chrome専用のスイートはしばしばより高速に実行されます。ただし、この優位性はChromiumベースのブラウザにのみ適用され、テストがネットワークに依存するようになると差は縮まります。Selenium 4のBiDiサポートもその差を縮めています。速度は確かに存在しますが、Seleniumのクロスブラウザの広さに対して決定的な要因になることはめったにありません。

PuppeteerはSeleniumを置き換えられますか?

Chrome中心の作業に限ります。Puppeteerは、Node.jsからChrome、Chromium、Edgeを自動化するのに優れていますが、SafariやInternet Explorerを操作できず、実際のモバイルサポートはなく、JavaScript専用です。クロスブラウザテスト、複数の言語、または実際のデバイスが必要な場合は、Seleniumの方が幅広いツールであり続けます。多くのチームは、高速なChromeチェックにはPuppeteerを、完全なクロスブラウザカバレッジにはSeleniumを使用します。

PuppeteerはChrome以外のブラウザをサポートしていますか?

Puppeteerは、Chrome、Chromium、ChromiumベースのEdgeを操作し、実験的にFirefoxをサポートしています。SafariやInternet Explorerは操作できません。Seleniumは、ベンダー提供のドライバを介して、SafariやInternet Explorer 11を含む主要なすべてのブラウザの実際のバイナリを操作します。Chromiumを超える何かが必要な場合は、この2つのうちSeleniumが選択肢となります。TestingBotは両方をブラウザグリッド全体で実行します。

Puppeteerはモバイルアプリのテストを行うことができますか?

いいえ。PuppeteerはChromiumでモバイルビューポートのエミュレーションを提供していますが、ネイティブのiOSアプリやAndroidアプリを操作することはできません。実際のモバイルテストには、AppiumXCUITestEspresso、またはMaestroが必要です。Appiumは、Seleniumの基盤となっているWebDriverプロトコルを再利用します。TestingBotは、実際のiOSおよびAndroidデバイス上でこれらのすべてを実行します。

WebスクレイピングにはPuppeteerとSeleniumのどちらが適していますか?

Puppeteerは、DevToolsへの直接アクセスとNode.jsエコシステムのおかげで、スクレイピング、PDF生成、ヘッドレスChrome自動化においてより一般的な選択肢です。Seleniumもスクレイピングは可能ですが、その強みは多数の言語にわたるクロスブラウザのテスト自動化にあります。仕事に合ったツールを選びましょう。Chrome自動化のタスクにはPuppeteerを、標準ベースのクロスブラウザテストにはSeleniumを。

TestingBot上でPuppeteerを並列で実行できますか?

はい。Puppeteerのワーカーベースの並列化(Jest、Mocha、またはカスタムランナー経由)は、TestingBotグリッドに対して機能します。各ワーカーはWebSocketエンドポイント経由で独自のリモートブラウザを開きます。同時実行数はプランによって上限が定められています。SeleniumはWebDriverハブを介して同じ方法で並列化します。

TestingBot上でSeleniumとPuppeteerを実行できますか?

はい、どちらも同じTestingBotクラウド上で動作します。Seleniumはwebdriver.Remoteを介してhttps://hub.testingbot.com/wd/hubに接続します。Puppeteerはpuppeteer.connectで、wss://cloud.testingbot.com/puppeteerbrowserWSEndpointを使用して接続します。どちらのツールのテストも同じダッシュボードに表示され、並列スロットを共有し、同じEUデータ所在地、ビデオ録画、CI/CD統合のメリットを享受できます。どちらもオープンソースプロジェクトでは無料で利用できます。

さらに詳しく知りたい方は、専用のSeleniumページとPuppeteerページをご覧ください。

無料トライアルにサインアップ

TestingBotのクラウド上で、Selenium、Puppeteer、またはその両方を実行できます。

無料トライアルを開始する