シンママQAエンジニア|WindowsでPlaywright×Chromeを動かす手順

QAエンジニア

テスト自動化ツール「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 が設定される
  • 効果はその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は Activate.ps1 実行時にブロックされることがある(Set-ExecutionPolicy が必要)。
    • cmdはその心配なし
  • 仮想環境の見分け
    • どちらもプロンプト先頭に (.venv) が付けばOK。
    • 解除は共通で deactivate
  • 環境確認
    • cmd:where python / where pip
    • PowerShell:where.exe python / where.exe pip(または Get-Command python

つまずきやすい所

  • '.\.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に発展させて、より実用的な自動テストに育てていきましょう。

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