1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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/

2024-12-031.32.32-ezgif.com-video-to-gif-converter.gif

Playwright InspectorのTargetドロップダウンからテストコード、同期処理、非同期処理に切り替えることができます。

2024-12-031.35.49-ezgif.com-video-to-gif-converter.gif

Playwright Inspectorについて解説

Playwright Inspector.png

  • 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には今回記載したコード自動生成機能以外にも様々な便利機能があるのでぜひ使ってみてはいかがでしょうか。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?