🤖

PythonでPlaywriteの環境構築

2024/10/03に公開

Playwrightとは?

Playwrightは、Webブラウザの自動化ツールです。もともとはNode.js用に開発されましたが、Python版も提供されており、ヘッドレスブラウザの操作やテスト自動化に利用できます。Playwrightは、Chromium、Firefox、WebKitといった複数のブラウザエンジンをサポートしており、クロスブラウザテストを効率的に実行できます。

Playwrightの特徴

  • マルチブラウザ対応:Chrome、Firefox、Safariなどの異なるブラウザで一貫した動作を実現できます。
  • ヘッドレスモード:ブラウザを表示せずにバックグラウンドで操作できますが、ヘッドフルモードでも動作させることができます。
  • 自動化の柔軟性:ページのナビゲーション、クリック、スクリーンショットの撮影、フォームの入力など、幅広い操作を自動化可能です。
  • APIテスト:Webページだけでなく、APIテストの自動化にも使用できます。
  • スクレイピング:Webページのデータを簡単に取得して、スクレイピングにも利用できます。
  • シンプルな並行処理:テストや操作を並行して実行することで、処理速度を大幅に向上させることができます。

Playwrightのインストールとセットアップ

1. インストール:
Python用のPlaywrightをインストールするには、以下のコマンドを使用します。

pip install playwright

2. ブラウザバイナリのインストール:
Playwrightのブラウザバイナリをインストールするために、次のコマンドを実行します。

playwright install

ブラウザバイナリとは、Webブラウザが実行可能な形式のプログラムファイルのことです。ブラウザは、ユーザーがウェブページを表示するためのソフトウェアですが、その内部には、HTML、CSS、JavaScriptなどを解釈してページをレンダリングするためのプログラムが含まれています。バイナリという言葉は、コンピュータが実行するための「機械語に変換されたプログラム」という意味で使われています。

具体的には、Google ChromeやFirefox、SafariなどのWebブラウザには、それぞれのプラットフォーム(Windows, macOS, Linuxなど)向けの実行可能なバイナリファイルが存在し、これをインストールして使うことになります。

Playwrightでのブラウザバイナリ

Playwrightでは、複数のブラウザ(Chromium, Firefox, WebKit)のバイナリを直接利用します。Playwrightを使ってブラウザを自動化する際、このバイナリが必要です。ブラウザのUIを表示したり、ヘッドレスモードでバックグラウンド実行するために、このブラウザバイナリが正しくインストールされ、かつPlaywrightがそれにアクセスできる状態である必要があります。

3. サンプルコード:
簡単なPlaywrightのコード例です。例えば、特定のWebページを開き、タイトルを取得する場合のコードは以下のようになります。

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto('https://google.com')
    print(page.title())
    browser.close()

プログラムの実行は、通常通りコマンドプロンプト(またはパワーシェルなど)から、以下のように実行すればOKです。

python プログラム名.py

ヘッドレスモード(ブラウザを表示しない)でGoogleにアクセスし、タイトルを取得してかつスクリーンショットを撮りpngファイルとして保存する場合は次のようになります。

from playwright.sync_api import sync_playwright

def run(playwright):
    # ヘッドレスモードでChromiumブラウザを起動
    # headless=True はヘッドレスモード
    browser = playwright.chromium.launch(headless=True)
    
    # 新しいページを開く
    page = browser.new_page()
    
    # 任意のサイトにアクセス
    page.goto('https://google.com')
    
    # ページタイトルを取得して出力
    print(page.title())
    
    # スクリーンショットを撮影
    page.screenshot(path="google.png")
    
    # ブラウザを閉じる
    browser.close()

# Playwrightの開始
with sync_playwright() as playwright:
    run(playwright)

Playwrightの主な用途

  • エンドツーエンドテスト:ユーザーがブラウザで行う操作を再現し、Webアプリケーションの動作確認を行います。
  • Webスクレイピング:動的にレンダリングされるWebページからデータを抽出します。
  • PDFやスクリーンショットの生成:WebページをPDFに変換したり、特定の要素のスクリーンショットを取得したりできます。

Playwrightの利点

  • パフォーマンスが高い:ブラウザ操作を効率的に並行処理することで、他のツールと比べても高速に動作します。
  • 高精度な操作:ページのレンダリングやネットワークのイベントを細かく制御できるため、より正確なテストが可能です。
  • 詳細なログとデバッグ機能:操作内容やネットワークトラフィックのログを確認し、デバッグを容易に行うことができます。

おわりに

PythonでPlaywrightを導入する方法と、簡単なサンプルコードを紹介しました。うまく動作しなかったよ…、わかりにくいよ…などございましたら、お気軽にコメントいただければ幸いです。

Discussion