Playwrightとは
Playwrightはマイクロソフトが提供するオープンソースのエンドツーエンドテスト自動化フレームワークです。ブラウザの操作をプログラムで記述することで、テストやスクレイピングなどを効率的に実現できます。
今回はエンドツーエンドテスト自動化フレームワークの中でPlaywrightを選ぶ利点や導入方法、便利なコード自動生成機能について解説します。
対応言語はTypeScript、JavaScript、Python、Javaといった複数の言語で使用でき、Chromium、Firefox、WebKitといった複数のブラウザエンジンに対応しています。
Playwrightの利点
-
自動待機機能
Playwrightは要素の読み込みや表示を自動的に待機する機能が備わっています。
そのため他のスクレイピングツールで実装が必要だった明示的な待機処理を省略して実装できるため、シンプルな記述で高度なブラウザ操作が可能になります。 -
高速な操作
Playwrithの他にエンドツーエンドテスト自動化フレームワークとして代表的なSeleniumがありますが、SeleniumはWebDriverプロトコルを使用してブラウザと通信するため、プロトコルとブラウザとのやりとりのHTTPリクエストで若干の遅延が生じることがあります。
対してPlaywrightはブラウザと直接通信するため、低レイテンシーな操作が可能です。 -
非同期処理の活用
Playwrightは非同期APIをフル活用しており、並行処理による効率的な操作が可能です。一方、Seleniumは基本的に同期的な操作が中心です。 -
コード自動生成機能
Playwrightはコード自動生成機能を提供しており、手作業で行ったブラウザ操作を自動的にコードとして記録します。これにより、効率的にテストやスクレイピング用のコードを生成できます。
Playwrightの公式ドキュメントはこちら
Playwrightの使用方法
Playwrightのインストール
pip install pytest-playwright
必要なブラウザのインストール
playwright install
これでPlaywrightのコードが実行できるようになりました。
コード自動生成機能
以下コマンドでPlaywright Inspectorが立ち上がり、表示されたブラウザに対して実装したいスクレイピング操作をすることで、Playwrightのコードを生成してくれます。
playwright codegen <サイトURL>
サイトURLはオプションでplaywright codegen
を実行後、開いたブラウザに直接サイトリンクを入力する方法でもコード生成可能です。
実際にコード生成してみる
スクレイピング練習用のサイトがあったのでこちらを使用してコード生成してみました。
サイト↓
以下コマンドでジェネレータを起動しブラウザを操作することでコードが自動生成されていることが確認できました。
playwright codegen https://quotes.toscrape.com/
Playwright InspectorのTargetドロップダウンからテストコード、同期処理、非同期処理に切り替えることができます。
Playwright Inspectorについて解説
- Pick locator
選択した要素を取得するコードを作成 - Assert Visibility
表示されていることを期待するテストコードを作成 - Assert Text
テキスト文字をassertするコードを生成 - Pick locator
選択した要素を取得するコードを作成 - Target
ドロップダウンから様々な言語, 同期・非同期処理のコードへ変換
Playwright Inspectorにはdebugモードが用意されており、実装したテストコードをPWDEBUG=1
をつけてpytest
の実行をするとdebugモードで起動できます。
breakpointを入れたい場合は実装コードにpage.pause()
を入れることでpage.pause()
の前で止めることができるようです。
PWDEBUG=1 pytest
まとめ
今回はPlaywrightについてまとめてみました。
セットアップが簡単で実装コードもシンプルな記述な上にコード自動生成機能があるので個人的に大好きなE2Eテストフレームワークです。
Playwrightには今回記載したコード自動生成機能以外にも様々な便利機能があるのでぜひ使ってみてはいかがでしょうか。