テスト自動化ツール「Playwright」を使ってみたいけど、最初のセットアップでつまずいた経験はありませんか。
特にWindows環境では、Pythonの準備やブラウザの設定で迷う方が多いようです。
この記事では、Pythonの仮想環境づくりからPlaywrightの導入、そして普段使っているGoogle Chromeでテストを実行するまでの流れを、できるだけシンプルにまとめました。
「まずは動いた!」という体験を作ることをゴールにしているので、最小限のコードと実行例で解説しています。
最後にはトラブルシューティングや発展的な使い方も紹介していますので、安心してチャレンジしてみてください。
0. 事前準備
- Windows 10 または 11
- Google Chrome がインストール済み
- 管理者権限を持つユーザー
※Pythonがまだ入っていない場合は、公式サイトから「3.11〜3.12系」をインストールしておくと安定します。インストール時は「Add python.exe to PATH」にチェックを忘れずに。
1. 作業用フォルダを作成
エクスプローラーで任意の場所に作業フォルダを作成します。
例:
C:\qa\playwright-demo
以降の操作はこのフォルダを使います。
2. Python仮想環境を作成
PowerShellまたはWindowsターミナルを開き、次を順に実行します。
cd C:\qa\playwright-demo
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -V
最後に (venv)
が表示され、Pythonのバージョンが出れば成功です。
1) python -m venv .venv は何をしてる?
- 標準モジュール
venv
を実行して、カレントフォルダ配下に.venv
という仮想環境を作成します。 - 中身はだいたいこんな構成:
.venv\Scripts\python.exe
(この環境専用のPython本体).venv\Scripts\pip.exe
(この環境専用のpip).venv\Lib\site-packages\
(この環境に入れたライブラリが入る場所)pyvenv.cfg
(設定ファイル)
- ポイント
- 管理者権限は不要。PC全体のPythonは一切変更されません。
- プロジェクトごとにライブラリを分けられるので、依存関係が混ざらない(Playwrightのバージョン違い衝突を防げる)。
2) .\.venv\Scripts\Activate.ps1 は何をしてる?
- PowerShell用のアクティベーションスクリプトを実行して、以下を一時的に切り替えます:
- PATH を書き換えて、
python
/pip
が.venv\Scripts\
のものを指すようにする - プロンプト に
(.venv)
が付き、いま仮想環境内だと分かる - 環境変数
VIRTUAL_ENV
が設定される
- PATH を書き換えて、
- 効果はそのPowerShellウィンドウの中だけ。閉じれば元に戻ります。
3) コマンドプロンプト(cmd)ではダメなの?
コマンドプロンプト(cmd)でも問題なし!
PowerShellで例を書いたのは “実行ポリシーや表示が分かりやすいから” ですが、cmdでも同じことができます。
cmd版:コピペ手順(Chrome×Playwright×Python)
cd /d C:\qa\playwright-demo
python -m venv .venv
.\.venv\Scripts\activate.bat
python -m pip install --upgrade pip
python -m pip install playwright
python -m playwright install
python main.py
activate.bat
が cmd用 の有効化スクリプトです。python -m pip ...
/python -m playwright ...
と -m で呼ぶと、今の仮想環境のPythonに確実に紐づきます。
PowerShellとの違いミニまとめ
- 有効化スクリプト
- PowerShell:
.\.venv\Scripts\Activate.ps1
- cmd:
.\.venv\Scripts\activate.bat
- PowerShell:
- 実行ポリシーエラー
- PowerShellは
Activate.ps1
実行時にブロックされることがある(Set-ExecutionPolicy
が必要)。 - cmdはその心配なし。
- PowerShellは
- 仮想環境の見分け
- どちらもプロンプト先頭に
(.venv)
が付けばOK。 - 解除は共通で
deactivate
。
- どちらもプロンプト先頭に
- 環境確認
- cmd:
where python
/where pip
- PowerShell:
where.exe python
/where.exe pip
(またはGet-Command python
)
- cmd:
つまずきやすい所
'.\.venv\Scripts\activate.bat' は内部コマンド…
→ パスの打ち間違いか、フォルダ位置が違う可能性。dir .venv\Scripts
で存在確認。python
が見つからない → Microsoft Store版の影響やPATH未設定のことあり。py -V
が動くならpy -m venv .venv
でもOK。
3. Playwrightをインストール
仮想環境のまま以下を実行します。
pip install --upgrade pip
pip install playwright
python -m playwright install
最後のコマンドでPlaywright専用のブラウザ(Chromiumなど)がセットアップされます。
今回はChromeを使いますが、念のためChromium一式も入れておくと便利です。
4. Chromeで動かすサンプルコード
「Chromium」と「Chrome」の違い
- Chromium:Playwrightが同梱するオープンソース版ブラウザ(再現性が高い)
- Chrome:普段使っているGoogle Chrome。
channel="chrome"
を指定すると利用できます。
サンプルスクリプト
C:\qa\playwright-demo\main.py
を作成して以下を保存します。
from playwright.sync_api import sync_playwright, expect
import re
def run():
with sync_playwright() as p:
# ★Chromeを使うポイント:channel="chrome"
browser = p.chromium.launch(channel="chrome", headless=False, slow_mo=300)
context = browser.new_context(viewport={"width": 1280, "height": 800})
page = context.new_page()
# 1) ページを開く
page.goto("https://example.org/")
expect(page).to_have_title("Example Domain")
# 2) リンクをクリック → 遷移確認
page.get_by_role("link", name="More information.").click()
expect(page).to_have_url(re.compile(r"iana\.org"))
# 3) 戻る
page.go_back()
expect(page).to_have_title("Example Domain")
context.close()
browser.close()
if __name__ == "__main__":
run()
ポイント:
headless=False
→ 実際のブラウザ画面を表示slow_mo=300
→ 0.3秒スローで動作確認がしやすいexpect(...)
→ 結果を確認するアサーション(テストの基準)
実行コマンド:
python .\main.py
Chromeのウィンドウが立ち上がり、リンククリックと戻る動作まで確認できれば成功です。
5. 最小構成のプロジェクト例
playwright-demo/
├─ .venv/ # 仮想環境
├─ main.py # サンプルスクリプト
└─ tests/ # (発展)pytestでの自動テスト置き場
└─ test_example.py
まずは main.py
で「動いた!」を体験し、慣れてきたら pytest
を導入していきましょう。
6. pytestでテスト化する(発展)
追加で以下をインストールします。
pip install pytest pytest-playwright
例:tests/test_example.py
from playwright.sync_api import Page, expect
import re
def test_open_example_with_chrome(page: Page):
page.goto("https://example.org/")
expect(page).to_have_title("Example Domain")
page.get_by_role("link", name="More information.").click()
expect(page).to_have_url(re.compile(r"iana\.org"))
page.go_back()
expect(page).to_have_title("Example Domain")
実行:
pytest -q --browser-channel=chrome --headed
※pytestでChromeを使いたい場合は、自作のfixtureで channel="chrome"
を渡す方法が確実です。
7. コードを自動生成する「レコーダー」
操作を記録してコードを自動生成するツールもあります。
python -m playwright codegen https://example.org/
右側にPythonコードが生成されるので、コピーして main.py
に貼り付ければ便利です。
8. VS Codeで「インポートできない」と出る場合のトラブルシューティング
VS CodeでPythonファイルを開くと、次のようなエラーが出ることがあります。
インポート "playwright.sync_api" を解決できませんでした
これは 仮想環境とVS Codeのインタープリター設定が一致していない ことが原因です。
仮想環境とは?
仮想環境(venv)は、プロジェクト専用のPythonとライブラリを閉じ込めた「お弁当箱」のようなものです。
- グローバル環境 = 家の冷蔵庫(全プロジェクトで共有、食材がごちゃ混ぜ)
- 仮想環境 = プロジェクト専用のお弁当箱(必要な食材だけ入る)
これを使うことで、他のプロジェクトとライブラリが混ざらず、バージョン衝突を防げます。
解決方法
VS Codeの右下に表示されているPythonバージョンをクリックし、
「インタープリターの選択」から .venv\Scripts\python.exe
を指定してください。
もし一覧に出ない場合は、「インタープリター パスを入力…」から直接 .venv\Scripts\python.exe
を指定すればOKです。
これで「インポートできませんでした」というエラーは解消されます。
まとめ
Python+PlaywrightはWindowsでも簡単に始められます。
まずは channel="chrome"
を指定して、普段使っているChromeで「動いた体験」を作るのがおすすめです。
慣れてきたらpytestやCIに発展させて、より実用的な自動テストに育てていきましょう。