テスト自動化の代表的なツールには「Selenium」「Playwright」「pytest」があり、それぞれ得意な領域と特徴が異なるため、目的に合わせて選ぶことが重要です。
📌 この記事はこんな方におすすめ
- SeleniumとPlaywrightのどちらを使えばいいか迷っている方
- pytestがE2Eツールと何が違うのか知りたい方
- Pythonでテスト自動化を始めたいQAエンジニア・開発者
- チームにツールを導入する際に根拠を持って選定したい方
✅ この記事を読むとわかること
- Selenium・Playwright・pytestそれぞれの特徴と得意なこと
- 3つのツールの違いを一覧表で比較
- どのツールをどんな場面で使うべきか
- 実務でよく使う組み合わせパターン
📌 この記事の結論
Seleniumはブラウザ互換性の高さと実績が強み。Playwrightはモダンで高速・機能が豊富。pytestはPythonのテスト管理の基盤。実務では「pytest + Selenium or Playwright」の組み合わせが最もよく使われます。
「SeleniumとPlaywrightってどっちを使えばいいの?」「pytestはSeleniumと何が違うの?」——テスト自動化を始めるときに、多くの人がこの疑問にぶつかります。
3つのツールはそれぞれ役割が異なります。SeleniumとPlaywrightはブラウザ自動化ツール、pytestはテストの実行・管理フレームワーク。それぞれの特徴を正しく理解することで、プロジェクトに最適な選択ができるようになります。
3ツールの比較早見表
まず3つのツールの位置づけを一覧で確認しましょう。
| ツール | 種別 | 得意なこと | 速度 | 学習コスト |
|---|---|---|---|---|
| 🌐 Selenium | ブラウザ自動化 | クロスブラウザ・実績豊富 | 🏃 中程度 | 中程度 |
| 🎭 Playwright | ブラウザ自動化 | 高速・録画・自動待機 | ⚡ 高速 | 低め |
| 🧪 pytest | テスト管理フレームワーク | 単体・API・テスト管理全般 | ⚡ 高速 | 低め |
① 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()
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 playwright → playwright 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()
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
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テスト
📖 各ツールの実装例はこちら
まとめ
この記事では、テスト自動化の代表ツール「Selenium・Playwright・pytest」の特徴と使い分けを解説しました。
📋 この記事のまとめ
- Selenium:歴史が長く情報量が豊富。クロスブラウザ対応◎。待機処理を自分で書く必要あり
- Playwright:モダンで高速。Auto-wait・録画など機能が充実。新規プロジェクトにおすすめ
- pytest:ブラウザ操作ではなくテストの管理・実行フレームワーク。Seleniumや Playwrightと組み合わせて使う
- 実務の定番は「pytest + Selenium」または「pytest + Playwright」の組み合わせ
- 新規プロジェクトなら「pytest + Playwright」が現在のベストプラクティス
「どちらがいいか」よりも「まず使ってみる」が大切です。どちらから始めてもテスト自動化の本質的なスキルは身につきます。
実際の実装を見てみたい方は、まず PlaywrightでE2Eテストを自動化する方法(初心者向け) から読み進めてみてください👇
