Selenium × Pythonの環境構築を、初心者でも5分で動作確認までできるように解説します。
👉 この記事のコードをそのままコピペすれば、5分でテストが動きます。
「ChromeDriverのバージョンが合わない」「環境構築で詰まる」——そんな悩みを解決します。
本記事では、Selenium・webdriver-manager・pytestを使った実務構成で、エラーなく最短でテストを動かす方法を解説します。
👉 Playwrightとの違い:SeleniumはWebDriver経由でブラウザを操作する成熟した技法で、Playwrightより求人・案件数が圧倒的に多いです。
💡 この記事でできるようになること
Selenium × Python × pytest の環境を構築し、Googleにアクセスするテストが動くところまで持っていく
💡 他の記事との違い
多くの記事は「ChromeDriverを手動ダウンロード」する手順ですが、本記事では webdriver-manager を使って完全自動化しています。そのため、バージョン不一致で詰まることがありません。
Seleniumの環境構築でよくある失敗は「ChromeDriverのバージョンが合わない」「パスが通っていない」の2つです。この記事ではWebDriver Managerを使ってバージョン管理を自動化するため、詰まらずに進められます。
📌 この記事はこんな方におすすめ
- Selenium × Pythonの環境構築を初めてやる方
- ChromeDriverのバージョン管理で詰まった経験がある方
- pytestと組み合わせてテスト自動化を始めたい方
- UpworkでQA案件を取るためにSeleniumを習得したい方
✅ この記事を読むと得られること
- Python仮想環境・Selenium・WebDriver Managerのインストール手順がわかる
- ChromeDriverのバージョン管理を自動化する方法がわかる
- pytestとSeleniumを組み合わせた基本的なテストの書き方がわかる
👤 この記事を書いた人
QAエンジニア・テスト自動化エンジニアとして15年以上の実務経験を持つ Yoshi が執筆。Seleniumは実務で毎日使っており、ChromeDriverのバージョン問題で詰まった経験から、WebDriver Manager導入を標準としています。実装コードはGitHubで公開中:github.com/YOSHITSUGU728/automated-testing-portfolio
- Selenium × Python 環境構築の全体像
- STEP 1:Pythonのバージョン確認(Selenium環境構築の前提)
- STEP 2:仮想環境(venv)の作成と有効化【Python環境構築】
- STEP 3:Selenium・webdriver-manager・pytestのインストール方法(Selenium Python インストール)
- STEP 4:プロジェクト構成の作り方(pytest構成)
- STEP 5:Selenium WebDriverの設定(conftest.py)
- STEP 6:動作確認テストの書き方と実行方法(pytest)
- ⚠️ よくあるエラーと解決策
- SeleniumとPlaywrightの使い分けとは?
- FAQ
- 📋 この記事のまとめ
Selenium × Python 環境構築の全体像
まず全体の流れを把握してから進めましょう。
🗺️ 環境構築の全体フロー
| 1 | Python インストール確認 | python –version で確認 |
| 2 | 仮想環境(venv)の作成 | プロジェクトごとに依存関係を分離 |
| 3 | Selenium・WebDriver Manager インストール | pip install で一括インストール |
| 4 | pytest インストール | テスト実行フレームワーク |
| 5 | 動作確認テストを実行 | Googleにアクセスして title を確認 |
STEP 1:Pythonのバージョン確認(Selenium環境構築の前提)
まず Python がインストールされているか確認します。
python --version
# または
python3 --version出力例:
Python 3.11.5STEP 2:仮想環境(venv)の作成と有効化【Python環境構築】
仮想環境を使うことでプロジェクトごとにパッケージを分離できます。実務では必ず使いましょう。
仮想環境の作成
# プロジェクトフォルダを作成
mkdir selenium-project
cd selenium-project
# 仮想環境を作成
python -m venv venv仮想環境の有効化
| OS | コマンド |
|---|---|
| Windows | venv\Scripts\activate |
| Mac / Linux | source venv/bin/activate |
有効化されると、プロンプトの先頭に (venv) と表示されます。
(venv) $ STEP 3:Selenium・webdriver-manager・pytestのインストール方法(Selenium Python インストール)
Selenium 4系では webdriver-manager を使うことで ChromeDriver のバージョン管理が自動化されます。手動ダウンロードは不要です。
pip install selenium webdriver-manager pytestインストール確認:
pip list | grep -E "selenium|webdriver|pytest"
# 出力例
pytest 7.4.0
selenium 4.18.1
webdriver-manager 4.0.1pip freeze > requirements.txt で保存しておきましょう。チームメンバーが pip install -r requirements.txt で同じ環境を再現できます。STEP 4:プロジェクト構成の作り方(pytest構成)
実務で使いやすいフォルダ構成を最初から整えておきます。
selenium-project/
├── venv/ # 仮想環境(Gitには含めない)
├── tests/
│ ├── conftest.py # fixture定義
│ └── test_sample.py # テストファイル
├── requirements.txt # 依存パッケージ一覧
└── pytest.ini # pytest設定pytest.ini の作成
[pytest]
testpaths = tests
addopts = -vSTEP 5:Selenium WebDriverの設定(conftest.py)
WebDriver の初期化・終了処理を conftest.py の fixture に集約するのが実務のベストプラクティスです。
# tests/conftest.py
import pytest
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
@pytest.fixture(scope="function")
def driver():
"""Chrome WebDriverを起動・終了するfixture"""
options = webdriver.ChromeOptions()
# options.add_argument("--headless") # 最初はオフ推奨(画面を見ながら確認できる)
# CI/CD環境では上の行をオンにする
options.add_argument("--no-sandbox") # Linux/CI環境用(ローカルでは不要)
options.add_argument("--disable-dev-shm-usage") # Linux/CI環境用(ローカルでは不要)
options.add_argument("--window-size=1920,1080")
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service, options=options)
yield driver # テスト実行
driver.quit() # テスト終了後にブラウザを閉じる💡 ポイント
- 最初は
--headlessをオフにすることを推奨します。ブラウザが実際に動く様子を目で確認できるため、デバッグが格段に楽になります - 動作確認が取れたら
--headlessをオンにしてCI/CD環境に対応しましょう scope="function"はテストごとにブラウザを起動・終了します。テスト間の状態汚染を防げる最も安全な設定です
STEP 6:動作確認テストの書き方と実行方法(pytest)
安定して動く example.com を使った動作確認テストです。GoogleはCAPTCHAやリダイレクトが発生する場合があるため、環境構築の最初の確認には example.com が最適です。
# tests/test_sample.py
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_example_title(driver):
"""example.comのタイトルが正しく取得できるか確認"""
driver.get("https://example.com")
assert "Example Domain" in driver.title
def test_example_heading(driver):
"""example.comの見出しが表示されるまで待機して確認(実務レベルの書き方)"""
driver.get("https://example.com")
# WebDriverWait:要素が表示されるまで最大10秒待機(実務必須)
# visibility_of_element_located = DOMにあり、かつ画面に表示されていることを確認
heading = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.TAG_NAME, "h1"))
)
assert heading.is_displayed()💡 実務Tip:WebDriverWait を使う理由
driver.find_element()だけだと要素が表示される前にアクセスしてNoSuchElementExceptionが発生することがありますvisibility_of_element_located(DOMにあり+画面に表示)が最も確実。presence_of_element_located(DOMにあるだけ)より本質的なテストができます- 環境構築が完了したら、次のステップとしてこの待機処理を覚えておきましょう
テストの実行
pytest実行結果サンプル
========================== test session starts ==========================
platform darwin -- Python 3.11.5, pytest-7.4.0, selenium-4.18.1
collected 2 items
tests/test_sample.py::test_example_title PASSED [ 50%]
tests/test_sample.py::test_example_heading PASSED [100%]
========================== 2 passed in 3.21s ===========================⚠️ よくあるエラーと解決策
① SessionNotCreatedException: Chrome version mismatch
ChromeとChromeDriverのバージョンが合っていないエラーです。
# 解決策:webdriver-managerを使っていれば自動解決
# キャッシュが古い場合は削除して再インストール
pip install --upgrade webdriver-manager② ModuleNotFoundError: No module named ‘selenium’
仮想環境が有効化されていないか、仮想環境外にインストールされています。
# 解決策:仮想環境を有効化してから再インストール
source venv/bin/activate # Mac/Linux
venv\Scripts\activate # Windows
pip install selenium webdriver-manager③ テストが収集されない(collected 0 items)
ファイル名・関数名が test_ で始まっていない可能性があります。
# NG
def check_google(driver): # test_ がない
# OK
def test_google_title(driver): # test_ が必要④ TimeoutException / NoSuchElementException
要素が表示される前にアクセスしようとしています。明示的な待機を追加しましょう。
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 最大10秒待機して要素が表示されるまで待つ
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.NAME, "q"))
)SeleniumとPlaywrightの使い分けとは?
どちらを選ぶか迷う方向けに整理します。
| 比較項目 | Selenium | Playwright |
|---|---|---|
| 歴史・実績 | 2004年〜。業界標準 | 2020年〜。新しめ |
| 求人・案件数 | 圧倒的に多い | 増加中 |
| セットアップ | やや複雑(Driver必要) | シンプル(自動DL) |
| 実行速度 | やや遅い | 速い |
| 対応ブラウザ | Chrome・Firefox・Edge・Safari | Chrome・Firefox・WebKit |
| おすすめシーン | 既存プロジェクト・Upwork案件 | 新規プロジェクト・モダン開発 |
FAQ
Q. Selenium 3系と4系の違いは?
Selenium 4(2021年リリース)から WebDriver の管理方法が変わり、ChromeDriverの指定方法が変わりました。この記事はSelenium 4系を前提にしています。Selenium 3系のコードを見ると webdriver.Chrome(executable_path=...) という書き方が多いですが、4系では非推奨です。webdriver-managerを使えばどちらも対応できます。
Q. ヘッドレスモードとは何ですか?
ブラウザウィンドウを表示せずにバックグラウンドでテストを実行するモードです。CI/CD環境(GitHub Actions等)ではディスプレイがないためヘッドレスが必須です。ローカル開発時は --headless を外すと実際のブラウザ操作が見えるのでデバッグに便利です。
Q. Firefoxでも使えますか?
使えます。webdriver-manager は GeckoDriver(Firefox用)にも対応しています。from webdriver_manager.firefox import GeckoDriverManager を使うことでFirefoxでも同じように自動管理できます。
📖 関連記事
実務では、webdriver-manager を使った ChromeDriver 自動管理を標準にしています。かつては ChromeDriver を手動ダウンロードしてバージョンが合わず詰まる案件が多かったですが、webdriver-manager 導入後は環境構築でのトラブルがほぼゼロになりました。新しくプロジェクトを始める際は必ずこの構成を採用しています。
この記事の手順通りに進めれば、環境構築で詰まることはありません。万が一エラーが出た場合は上の「よくあるエラーと解決策」を参照してください。
📋 この記事のまとめ
- Selenium × Python環境構築は venv → pip install → conftest.py → テスト実行の5ステップ
- webdriver-manager を使うことで ChromeDriver のバージョン管理が自動化され詰まらない
- WebDriver の初期化・終了は conftest.py の fixture に集約するのが実務のベストプラクティス
--headlessオプションでCI/CD環境にも対応できる- Seleniumは求人・案件数が最も多いツールなのでUpwork案件獲得に直結する
まずは pytest で2つのテストが PASSED になることを確認しましょう。環境が動いてしまえば、あとはテストケースを追加していくだけです。次のステップとして、ログインフォームのバリデーションテストや Page Object Model パターンの実装に進んでみてください。

