Selenium vs Playwright vs pytest|Pythonテスト自動化ツールの選び方

テスト自動化の代表的なツールには「Selenium」「Playwright」「pytest」があり、それぞれ得意な領域と特徴が異なるため、目的に合わせて選ぶことが重要です。

📌 この記事はこんな方におすすめ

  • SeleniumとPlaywrightのどちらを使えばいいか迷っている方
  • pytestがE2Eツールと何が違うのか知りたい方
  • Pythonでテスト自動化を始めたいQAエンジニア・開発者
  • チームにツールを導入する際に根拠を持って選定したい方

✅ この記事を読むとわかること

  • Selenium・Playwright・pytestそれぞれの特徴と得意なこと
  • 3つのツールの違いを一覧表で比較
  • どのツールをどんな場面で使うべきか
  • 実務でよく使う組み合わせパターン

👤

この記事を書いた人:QAエンジニアとしてSelenium・Playwright・pytestを実務で使い分けてきた経験をもとに解説します。3つのツールすべてを実際のプロジェクトで使用した上での比較です。GitHubでコードも公開中。

📌 この記事の結論

Seleniumはブラウザ互換性の高さと実績が強み。Playwrightはモダンで高速・機能が豊富。pytestはPythonのテスト管理の基盤。実務では「pytest + Selenium or Playwright」の組み合わせが最もよく使われます。

「SeleniumとPlaywrightってどっちを使えばいいの?」「pytestはSeleniumと何が違うの?」——テスト自動化を始めるときに、多くの人がこの疑問にぶつかります。

3つのツールはそれぞれ役割が異なります。SeleniumとPlaywrightはブラウザ自動化ツール、pytestはテストの実行・管理フレームワーク。それぞれの特徴を正しく理解することで、プロジェクトに最適な選択ができるようになります。


3ツールの比較早見表

まず3つのツールの位置づけを一覧で確認しましょう。

ツール 種別 得意なこと 速度 学習コスト
🌐 Selenium ブラウザ自動化 クロスブラウザ・実績豊富 🏃 中程度 中程度
🎭 Playwright ブラウザ自動化 高速・録画・自動待機 ⚡ 高速 低め
🧪 pytest テスト管理フレームワーク 単体・API・テスト管理全般 ⚡ 高速 低め
💡 重要なポイント: pytestはSelenium・Playwrightと競合するツールではありません。pytestをテスト管理の基盤にして、その上でSeleniumやPlaywrightを動かすのが実務での標準的な構成です。

① Selenium

どんなツールか

  • 2004年から続くブラウザ自動化の定番ツール。実績と情報量が圧倒的
  • Chrome・Firefox・Safari・Edgeなど複数ブラウザに対応したクロスブラウザテストが得意
  • Python・Java・JavaScript・C#など多言語対応で、既存プロジェクトに導入しやすい

Seleniumはブラウザを実際に操作してWebアプリをテストするツールです。WebDriverを通じてブラウザを制御し、クリック・入力・画面遷移などの操作を自動化します。長い歴史を持ち、ネット上の情報やサンプルコードが豊富なため、困ったときに解決策が見つかりやすいのが大きな強みです。

✅ Seleniumが向いているケース

  • 複数ブラウザでの動作確認が必要
  • Java・C#など非Pythonチームの場合
  • 既存のSeleniumテストを引き継ぐ場合
  • 情報量の多さを重視する場合

⚠️ 注意点

  • 待機処理(WebDriverWait)を自分で書く必要がある
  • Playwrightより実行速度がやや遅い
  • スクリーンショット・動画録画の設定がやや手間
対応言語 Python / Java / JavaScript / C# / Ruby
対応ブラウザ Chrome / Firefox / Safari / Edge(クロスブラウザ対応◎)
インストール pip install selenium
GitHubスター数 約31,000 ⭐(2026年3月現在)

▼ Seleniumのコードサンプル(Python)

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

driver = webdriver.Chrome()
driver.get("https://example.com/login")

# 要素を待機してから操作
wait = WebDriverWait(driver, 10)
email = wait.until(EC.presence_of_element_located((By.ID, "email")))
email.send_keys("test@example.com")

driver.find_element(By.ID, "password").send_keys("password123")
driver.find_element(By.ID, "submit").click()

driver.quit()
💡 実務Tip: Seleniumは待機処理が鍵です。time.sleep()ではなくWebDriverWaitを使うことで、ページの読み込み完了を確認してから操作できます。これだけで不安定なテストの大半が解消されます。

② Playwright

どんなツールか

  • Microsoftが開発したモダンなブラウザ自動化ツール(2020年リリース)
  • 自動待機(Auto-wait)機能により、待機処理を自分で書かなくてよい
  • スクリーンショット・動画録画・トレースビューアが標準搭載されエビデンス収集が簡単

PlaywrightはSeleniumの課題を解決するために設計されたモダンなブラウザ自動化ツールです。要素が見つかるまで自動で待機してくれるAuto-wait機能により、Seleniumで必要だった待機処理の記述が不要になります。実行速度も速く、動画録画やネットワーク傍受など高度な機能も標準で備えています。

✅ Playwrightが向いているケース

  • 新規プロジェクトでE2Eを構築する場合
  • スクリーンショット・動画録画が必要な場合
  • テストの安定性を最優先にしたい場合
  • Python / JavaScript / TypeScriptチームの場合

⚠️ 注意点

  • 2020年リリースのためSeleniumより情報量がやや少ない
  • Java・C#のサポートはSeleniumより限定的
  • 独自のブラウザバイナリを使うため初回インストールがやや重い
対応言語 Python / JavaScript / TypeScript / Java / C#
対応ブラウザ Chromium / Firefox / WebKit(Safari相当)
インストール pip install playwrightplaywright install
GitHubスター数 約68,000 ⭐(2026年3月現在・急成長中)

▼ Playwrightのコードサンプル(Python)

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://example.com/login")

    # Auto-waitで自動的に要素を待機してから操作
    page.fill("#email", "test@example.com")
    page.fill("#password", "password123")
    page.click("#submit")

    # スクリーンショットも1行で保存
    page.screenshot(path="login_result.png")

    browser.close()
💡 実務Tip: Playwrightはpage.fill()page.click()が自動で要素の表示を待ってから実行してくれます。Seleniumで悩まされた「要素が見つからない」エラーが激減します。さらにpage.screenshot()一行でスクリーンショット保存できるのも便利です。

③ pytest

どんなツールか

  • Pythonのテストを実行・管理するためのフレームワーク
  • 単体テスト・APIテスト・結合テストの管理基盤として使われる
  • SeleniumやPlaywrightと組み合わせてE2Eテストの管理にも使える

pytestはSeleniumや Playwrightのようなブラウザ操作ツールではなく、テストを管理・実行するためのフレームワークです。テストの検出・実行・結果レポートを担います。assert文でシンプルに検証でき、fixtureという仕組みでテストの前処理・後処理を共通化できます。

✅ pytestが向いているケース

  • Pythonの単体テスト・APIテストの管理
  • テストをCI/CDに組み込む場合
  • 複数テストをまとめて実行・レポート化
  • Selenium・Playwrightのテストを管理したい場合

⚠️ 注意点

  • ブラウザ操作の機能は持っていない
  • E2Eテストには別途Selenium or Playwrightが必要
  • Python専用(他言語には別フレームワークを使う)
対応言語 Python 専用
主な用途 単体テスト / APIテスト / テスト管理 / CI連携
インストール pip install pytest
GitHubスター数 約12,000 ⭐(2026年3月現在)

▼ pytestのコードサンプル

import pytest
import requests

# APIテストの例
def test_get_user():
    response = requests.get("https://jsonplaceholder.typicode.com/users/1")
    assert response.status_code == 200
    assert response.json()["name"] == "Leanne Graham"

# fixtureで共通処理を定義
@pytest.fixture
def base_url():
    return "https://jsonplaceholder.typicode.com"

def test_post_created(base_url):
    response = requests.post(f"{base_url}/posts", json={"title": "test"})
    assert response.status_code == 201
💡 実務Tip: pytestのfixture機能はとても強力です。ブラウザの起動・終了やテストデータの準備など、テストの前後処理を一箇所で管理できます。Seleniumと組み合わせると「テスト開始時にブラウザを起動、終了時に自動で閉じる」を自動化できます。

SeleniumとPlaywrightを詳しく比較

E2Eツールとして競合するSeleniumとPlaywrightの違いをさらに詳しく比較します。

比較項目 🌐 Selenium 🎭 Playwright
リリース年 2004年(歴史が長い) 2020年(モダン)
待機処理 自分で書く必要あり Auto-wait(自動)
実行速度 やや遅い 高速
スクリーンショット 設定が必要 1行で保存
動画録画 標準では非対応 標準搭載
情報・実績 圧倒的に豊富 急増中
クロスブラウザ ◎(実ブラウザ対応) ◎(Chromium/Firefox/WebKit)

🤔 どちらを選ぶべきか?

Seleniumを選ぶなら 既存プロジェクトの引き継ぎ / Java・C#チーム / 情報量を重視
Playwrightを選ぶなら 新規プロジェクト / Python・JSチーム / 安定性・速度を重視

実務でよく使われる組み合わせパターン

3つのツールは単独ではなく組み合わせて使うのが実務の標準です。代表的なパターンを紹介します。

🌐 パターン①

pytest + Selenium

Seleniumで既存のE2Eテストを持っているチームの定番構成。pytestがテストを管理・実行し、Seleniumがブラウザを操作する。

pytest → テスト管理
selenium → ブラウザ操作
requests → APIテスト

🎭 パターン②

pytest + Playwright

新規プロジェクトにおける現在のベストプラクティス。Playwrightの安定性・高速性とpytestの管理機能を組み合わせた最強構成。

pytest → テスト管理
playwright → ブラウザ操作
requests → APIテスト

💡 このブログでの構成: 当ブログのサンプルコードはすべて Python + Selenium or Playwright + pytest の組み合わせで実装しています。GitHubのコードも同じ構成です。

まとめ

この記事では、テスト自動化の代表ツール「Selenium・Playwright・pytest」の特徴と使い分けを解説しました。

📋 この記事のまとめ

  • Selenium:歴史が長く情報量が豊富。クロスブラウザ対応◎。待機処理を自分で書く必要あり
  • Playwright:モダンで高速。Auto-wait・録画など機能が充実。新規プロジェクトにおすすめ
  • pytest:ブラウザ操作ではなくテストの管理・実行フレームワーク。Seleniumや Playwrightと組み合わせて使う
  • 実務の定番は「pytest + Selenium」または「pytest + Playwright」の組み合わせ
  • 新規プロジェクトなら「pytest + Playwright」が現在のベストプラクティス

「どちらがいいか」よりも「まず使ってみる」が大切です。どちらから始めてもテスト自動化の本質的なスキルは身につきます。

実際の実装を見てみたい方は、まず PlaywrightでE2Eテストを自動化する方法(初心者向け) から読み進めてみてください👇

タイトルとURLをコピーしました