PlaywrightをPythonとpytestで始める手順(Windows環境でブラウザテスト)

Others,Selenium/Playwright

Playwright for Pythonを使ってブラウザテストを行うための手順です。
WindowsのPython環境にPlaywrightを導入し、pytest(pytest-playwright)でブラウザテストを実行するまでの手順を紹介します。

Playwright for Pythonを利用すると、PythonからChrome、Edge、Firefoxなどのブラウザを操作してWebテストを行うことができます。
Playwrightの概要説明からパッケージのインストール、pytest(pytest-playwright)用スクリプトの作成、テストの実行、pytest-htmlを利用したレポート作成までの流れを紹介しています。

スポンサーリンク

Windows環境でのPlaywright for Pythonセットアップ手順(pytestを使用)

Playwrightとは?

Playwrightは、Webブラウザで実行されるテストを自動化するためのツールです。
Microsoftが提供しているオープンソースライブラリで、JavaScript、TypeScript、C#、Pythonをサポートしています。
ブラウザは、Chrome/Firefox/Safari相当(Chromium/Firefox/WebKit)をサポートしています。

Installation(Playwright)
Playwrightでテスト自動化を設定する

今回は、Playwright for Pythonを利用しています。

Installation(Playwright for Python)
Playwright for Python(GitHub)

言語は限定されますが、Edgeを利用することも可能です。

Playwright を使用してMicrosoft Edgeで自動化とテストを行う

ヘッドレス実行(ブラウザを表示せず)に実行や並列実行ができるため、CI(GitHub Actions)などにも組み込みやすくなっています。

※PlaywrightはNode.jsのパッケージとして始まったため、Node.js版の機能が豊富となっています。
※Googleなど一部のWebサイトでは、playwrightによるアクセスがボットとして検知される場合があります。利用する際は注意してください。

pytestとは

pytestは、Pythonのテストを簡単に記述し、自動実行できるフレームワークです。
多くのプラグインが用意されています。
今回はpytestからplaywrightを利用するための公式プラグインpytest-playwrightと組み合わせて使用しています。

pytest(GitHub)
pytest(Documentation)

pytest-playwrightとは

pytestからPlaywrightを利用するための公式プラグインです。
pytest内でChromium、Firefox、WebKitを使用したブラウザテストを実行できます。
ヘッドレス実行やスクリーンショット、動画、トレースの収集などもpytest内で扱うことができます。

Pytest Plugin Reference(Playwright for Python)
pytest-playwright(PyPi)

今回使用した環境

今回は、Windows Server 2025の環境を利用しています。
また、pytestを使用しています。

    • 使用したバージョン
      • Python : 3.14.3
      • playwright : 1.58.0
      • pytest : 9.0.2
      • pytest-playwright 0.7.2
      • pytest-html 4.2.0

Pythonのインストール

Pythonのインストール手順については、こちらで紹介しています。

Microsoft Visual C++ Redistributable 2015–2022(x64/x86)のインストール

Python環境でplaywrightのテストを実行したところ、greenletのモジュールが見つかりませんというエラーメッセージが表示されることがあります。
Microsoft Visual C++ Redistributable 2015–2022(x64/x86)がインストールされていないことが原因となっている場合があります。

サポートされている最新の再頒布可能パッケージ バージョン(サポートされている最新の Visual C++ 再頒布可能パッケージのダウンロード)

Microsoft Visual C++ Redistributable 2015–2022のインストール手順

エラーメッセージの例

(.venv) PS C:\dev\python\playwright> pytest .\test.py
・・・(中略)・・・
ImportError: DLL load failed while importing _greenlet: 指定されたモジュールが見つかりません。

# モジュールを確認するとインストールされている
(.venv) PS C:\dev\python\playwright> python -m pip show greenlet

Name: greenlet
Version: 3.3.1
Summary: Lightweight in-process concurrent programming
Home-page: https://greenlet.readthedocs.io

サポートされている最新のVisual C++再頒布可能パッケージのダウンロードサイトから、最新の再頒布可能パッケージをダウンロードします。
ダウンロードしたファイルをダブルクリックしてインストールします。

 

Visual C++の再頒布可能パッケージをダウンロード(Playwright for Pythonを使ってブラウザテストを行うための手順)
Visual C++の再頒布可能パッケージをインストール(Playwright for Pythonを使ってブラウザテストを行うための手順)

Pythonの仮想環境を作成してpytestやplaywrightなどの必要なパッケージをインストール

Playwrightをインストールします。
まずプロジェクト用のPython仮想環境を作成して有効化します。
仮想環境内のpipを更新したうえで、playwrightやpytestなどのパッケージをインストールします。

今回は、C:\dev\python\playwright 配下に.venvという仮想環境を作成しています。

pytest-playwrightをインストールすると、同時にplaywrightもインストールされます。
また、パッケージはまとめてインストールすることも可能ですが、今回は確認のために1つずつインストールしています。

playwrightのインストール手順
Pythonの仮想環境を作成し、pytestやplaywrightなど必要なパッケージをインストールします。

# フォルダ内にPythonの仮想環境を作成
PS C:\dev\python\playwright>
py -m venv .venv
# 作成した仮想環境を有効化
PS C:\dev\python\playwright>
.\.venv\Scripts\Activate.ps1
# 仮想環境内のpipを最新版に更新

(.venv) PS C:\dev\python\playwright> python -m pip install -U pip
# 仮想環境内にpy-testのパッケージをインストール
(.venv) PS C:\dev\python\playwright> pip install py-test
# 仮想環境内にpytest-htmlのパッケージをインストール
(.venv) PS C:\dev\python\playwright> pip install pytest-html
# 仮想環境内にplaywrightのパッケージをインストール
(.venv) PS C:\dev\python\playwright>
pip install playwright
# 仮想環境内にpytest-playwrightのパッケージをインストール
(.venv) PS C:\dev\python\playwright> pip install pytest-playwright

# インストールされているパッケージを確認
(.venv) PS C:\dev\python\playwright> pip list
Package Version
—————— ——–
~(中略)~
greenlet 3.3.1
~(中略)~
playwright 1.58.0

~(中略)~
pytest 9.0.2

pytest-base-url 2.1.0
pytest-html 4.2.0
pytest-metadata 3.1.1
pytest-playwright 0.7.2
~(以下略)~

—広告—

pytestからPlaywrightのブラウザテストを行うための手順

pytest用のテストスクリプトを作成

pytestで実行できるPlaywrightのブラウザテスト用スクリプトを作成します。
今回は、Chromeを開いてYahoo! JAPANのトップページにアクセスし、タイトルを表示して10秒待ってから閉じます。

※Playwrightを使ってアクセスした場合、ボット扱いされることがあります。例えば、Google検索などではボット扱いされてしまうため注意が必要です。

ブラウザテスト用のpytestスクリプトを作成
VS Codeなどのエディタを使って、pytestスクリプトを作成します。
capsysを利用して、テスト中の標準出力(print の内容)をコンソールに表示しています。
また、headless=False を指定すると、GUIでブラウザを起動してサイトを表示します。
今回はファイル名を test.pyとして保存しています。

# playwrightのブラウザテスト用サンプルのpytestスクリプト
from playwright.sync_api import sync_playwright

def test_yahoo_japan(capsys):
    with sync_playwright() as p:

       # ブラウザを開いてサイトを表示

        browser = p.chromium.launch(channel="chrome", headless=False)
        page = browser.new_page()
        page.goto(“https://www.yahoo.co.jp/")
        page.wait_for_load_state(“domcontentloaded")

       # ページタイトルを表示

        title = page.title()
        with capsys.disabled():
            print(f"ページタイトル: {title}", flush=True)  

       # ブラウザを開いた状態で30秒間待機

        page.wait_for_timeout(10000) 

       # ブラウザを閉じてテストを終了

        browser.close()
 

※本サンプルは最低限の実装としています。そのためアクセスエラー時などの動作を考慮していません。

pytestコマンドでPlaywrightを使ったブラウザテストを実行

pytestコマンドを実行します。

pytestを実行

pytestスクリプトを実行します。
スクリプトを実行すると、Chromeが自動的に起動します。
実行結果が表示され、正常終了している場合はpassedと表示されます。逆にURLへアクセスできない場合などでエラーになった場合はfailedと表示されます。

# pytestの実行結果例
(.venv) PS C:\dev\python\playwright>
pytest .\test.py

=======
test session starts
=======

platform win32 — Python 3.14.3, pytest-9.0.2, pluggy-1.6.0
rootdir: C:\dev\python\playwright
plugins: base-url-2.1.0, html-4.2.0, metadata-3.1.1, playwright-0.7.2
collected 1 item

test.py ページタイトル: Yahoo! JAPAN

test.py . [100%]

=======
1 passed in 33.61s
========

(.venv) PS C:\dev\python\playwright>

# エラーになった場合の例
=== short test summary info ===
FAILED test.py::test_yahoo_japan – playwright._impl._errors.Error: Page.goto: net::ERR_NAME_NOT_RESOLVED at https://www.yahoo2.co.jp/
=== 1 failed in 2.70s ===

ブラウザテストの実行結果(Playwright for Pythonを使ってブラウザテストを行うための手順)

pytest-htmlを使ってブラウザテストの実行結果をレポートとして表示

pytest-htmlを利用すると、pytestのテスト実行結果をHTMLレポートとして出力できます。
成功/失敗・所要時間などを見やすくレポートして表示できます。

pytest-html(GitHub)
pytest-html(Documentation)
pytest-html(PyPi)

オプションを設定してpytestを実行
pytest-htmlを利用する場合は、pytest実行時に–htmlオプションを追加します。
併せて、レポートのhtmlファイル名を指定します。
出力されたhtmlファイルを表示すると、ブラウザテストの実行結果を確認できます。

(.venv) PS C:\dev\python\playwright\tests> pytest .\test.py –html=report.html
=======
test session starts
=======

platform win32 — Python 3.14.3, pytest-9.0.2, pluggy-1.6.0
rootdir: C:\dev\python\playwright
plugins: base-url-2.1.0, html-4.2.0, metadata-3.1.1, playwright-0.7.2
collected 1 item

test.py . [100%]

=======
1 passed in 33.61s
========

(.venv) PS C:\dev\python\playwright> ls .\report.html
ディレクトリ: C:\dev\python\playwright
Mode LastWriteTime Length Name
—- ————- —— —-
-a—- 2026/02/21 11:10 27744 report.html

pytest-playwrightの実行結果をpytest-htmlでレポート出力した場合の例(Playwright for Pythonを使ってブラウザテストを行うための手順)

—広告—

最後に

今回は、Playwright for Pythonを使ってブラウザテストを行う手順について簡単にまとめてみました。
pytestやpytest-playwrightを利用した手順を確認しています。

とても簡単に、pytestスクリプトの作成、テストの実行、pytest-htmlを利用したレポート作成までできました。
今回は手順確認がメインのため、単一のURLへのアクセスと最小限の内容のみテストを実施していますがもっと多くのブラウザ操作ができます。
実際にはフォームへの値入力、ボタン操作、画面遷移、要素の取得など、さまざまなブラウザ操作を自動化できます。

引き続き、いろいろ試してみたいと思います。

Seleniumを利用したブラウザテストの方法については、こちらで紹介しています。

Python関連の記事については、こちらで紹介しています

スポンサーリンク