Playwrightとは
「このボタンをクリックする」
「入力欄に文字を入れる」
「次のページに移動する」
こうしたブラウザ操作を、コードで自動的に実行できるようにするのがPlaywrightです。Microsoftが開発したライブラリになります。
まずはPlaywrightがどんな仕組みなのか、具体的に何ができるのかを学んでいきましょう。
ブラウザ自動操作の基本
普段Webサイトを使うとき、リンクをクリックしたり、検索ボックスに文字を入力したり、ページを移動したりといった操作を手動でしていますよね?
ブラウザ自動操作とは、こうした人の操作をプログラムで代わりに実行する仕組みです。
Playwrightを使うと、Pythonのコードに
「このURLを開いて」
「このボタンを押して」
「この欄に文字を入れて」
といった指示を書くだけで、実際にブラウザが起動し、その指示通りに動きます。何度も繰り返す作業や、大量のページを確認する作業を自動化できるのが大きなメリットです。
ちなみに、Chromium、Firefox、WebKitの3種類のブラウザエンジンに対応しており、ブラウザの主要な動作を幅広くカバーしています。
Playwrightでできること
Playwrightが活用される場面は多岐にわたります。代表的な用途をいくつか紹介します。
まず、Webアプリケーションの動作確認です。例えば、ログインフォームにユーザー名とパスワードを入力し、正しくログインできるかを自動的にチェックできます。手動で確認する手間が省けるため、開発現場で広く使われています。
次に、フォーム入力の自動化です。問い合わせフォームやアンケートなど、決まった内容を入力する作業をプログラムに任せられます。
また、ページに表示されている情報をPythonで取得して保存したり、データとして加工したりすることも可能です。JavaScriptで動的に表示される内容も取得できるのが特徴です。
さらに、画面のスクリーンショット撮影やPDF出力といった機能も備えており、表示結果の記録にも利用できます。
Seleniumとの違い
ブラウザ自動操作のツールとしては、Seleniumが以前から広く知られています。
PlaywrightもSeleniumも「ブラウザを自動で操作する」という目的は同じですが、操作の安定性において大きな違いがあります。
Seleniumでは、ページの読み込みが終わるのを待つための処理を自分で書く必要がある場面が多く、慣れないうちはエラーの原因になりやすいです。ページ上の要素がまだ表示されていない状態で操作しようとすると、エラーが発生するケースも少なくありません。
Playwrightはこの点が改善されており、要素を指定するとその要素が操作できる状態になるまで自動的に待ってくれます。ページの読み込みが遅い場合でもエラーが起きにくく、安定した自動操作を実現しやすいのが特徴です。
また、PlaywrightはChromium、Firefox、WebKitの3つのブラウザに1つのライブラリで対応しており、ブラウザごとにドライバーを個別にインストールする手間もありません。
Seleniumではブラウザごとにドライバーを個別に用意する必要があるため、この手軽さはPlaywrightの大きなメリットです。
Pythonで使うメリット
Playwrightは、Python以外にもJavaScriptやTypeScript、C#、Javaなどの言語から使えます。その中でもPythonは特に初心者にとって取り組みやすい選択肢です。
理由の1つは、Pythonの文法がシンプルで読みやすいからです。プログラミングの経験が少なくても、コードの意味を理解しやすく、学習の入り口としての敷居が低いという特徴があります。
2つ目に、データ処理や分析に関するライブラリが豊富に揃っているからです。
Playwrightで取得したデータをpandasで整理したり、CSVファイルに保存したりといった処理を、同じPythonのコードの中でそのままつなげられます。
テストの自動化だけでなく、日常業務の中で繰り返し行うブラウザ操作をスクリプト化し、作業を効率化する用途でも有用です。Pythonの汎用性の高さがPlaywrightとの相性をさらに高めています。
ブラウザ操作から、取得したデータの加工まで一気通貫で書けるのは、Pythonならではの強みです。
Playwrightのインストール
Playwrightを使い始めるには、ライブラリとブラウザの2つをインストールする必要があります。「ライブラリを入れるだけでは動かない」という点が他のPythonライブラリと少し違うポイントです。
導入に必要な環境の確認からインストール手順、最初の動作確認までを順に説明します。
ここまでの手順を踏めば、Playwrightを使い始められるのでしっかり押さえておきましょう。
必要な環境
Playwrightを動かすには、Pythonがインストールされているのが前提です。公式ドキュメントではPython 3.8以上が必要とされています。
ターミナルやコマンドプロンプトで次のコマンドを入力すると、現在のバージョンを確認できます。
OSはWindows、macOS、Linuxに対応しています。特別な開発環境は必要なく、テキストエディタとターミナルさえあれば始められます。
また、Pythonのパッケージ管理ツールであるpipが使える状態かどうかも確認しておきましょう。通常はPythonと一緒にインストールされています。
次のコマンドで確認してください。
ちなみに、venvなどで仮想環境を作ってから始めると、他のプロジェクトとライブラリのバージョンが混ざらず管理しやすくなります。
pipによるインストール
まずはライブラリをインストールします。ターミナルやコマンドプロンプトで次のコマンドを実行してください。
これでPlaywrightのPython用ライブラリがインストールされます。通常のPythonライブラリと同じ手順ですが、これだけではまだブラウザ操作はできません。次のステップで説明するブラウザのインストールも必要です。
ちなみに、pytestと組み合わせてテスト用途で使いたい場合は、pytest-playwrightというプラグインを別途インストールします。
ただし、最初は基本的なPlaywright本体の導入から始めるとよいでしょう。
ブラウザのインストール
ライブラリのインストールが終わったら、Playwrightが実際に操作するブラウザも用意する必要があります。次のコマンドを実行してください。
このコマンドで、Chromium、Firefox、WebKitの3種類のブラウザがダウンロードされます。ダウンロードに少し時間がかかりますが、初回のみの作業です。
普段使っているChromeやFirefoxとは別に、Playwright専用のブラウザが配置されます。
「ChromiumとChromeの名前が似てる」と思った方もいるかもしれませんね。
ChromiumはChromeの「ベース」となっているオープンソースのブラウザで、見た目や動作はほぼ同じですが別物です。
このブラウザをインストールする手順を飛ばすと、コード実行時に「ブラウザが見つからない」というエラーが出ます。ライブラリとブラウザの両方を導入して初めて、Playwrightが動く状態になります。
ちなみに、すでにChromeやFirefoxが入っている場合もインストールは必要です。
PlaywrightはOSにインストール済みのブラウザを直接使うのではなく、このコマンドでダウンロードしたPlaywright専用のブラウザを使って動作するからです。
また、特定のブラウザだけをインストールしたい場合は、playwright install chromiumのようにブラウザ名を指定することもできます。
最小コードでの動作確認
インストールが完了したら、短いコードを実行して動作を確認してみましょう。下記は、指定したWebページを開いてタイトルを表示するだけのシンプルなコード例です。
出力結果
Example Domain処理の流れは、次のようになっています。
- sync_playwright()でPlaywrightを起動する
- p.chromium.launch()でChromiumブラウザを立ち上げる
- browser.new_page()で新しいタブ(ページ)を作成する
- page.goto("https://example.com")で指定したURLへ移動する
- page.title()でページのタイトルを取得し、print()で表示する
- browser.close()でブラウザを閉じて終了する
エラーなくタイトルが表示されれば、環境構築は完了です。
Playwrightの使い方
環境が整ったら、実際の操作方法を学んでいきましょう。
ページを開く、ボタンを押す、テキストを入力するといった基本的な操作から、要素を見つけるためのlocatorの使い方、そして安定した動作に欠かせない待機処理まで順に確認していきます。
ページ遷移の基本
ブラウザ操作の出発点は、対象のページを開くことです。Playwrightではpage.goto()というメソッドにURLを渡すと、指定したページへ移動できます。
ここで少し、コード全体の流れを整理しておきましょう。
Playwrightでブラウザを操作するときは、次のようなプロセスを踏んでいます。
Playwrightを起動する → ブラウザを立ち上げる → 新しいタブ(ページ)を作る → URLへ移動する
普段自分でブラウザを開いてアドレスバーにURLを入力しているのと、基本的に同じプロセスです。
ちなみに、page.goto()には、ページの読み込みが完了するまで次の処理を待つ機能が自動で備わっています。「まだページが表示されていないのに次の操作が実行されてしまった」というエラーが起きにくい設計です。
また、移動先が別のURLに転送(リダイレクト)される場合でも、最終的なページが表示されるまで自動的に待ってくれます。
クリックと文字入力
Webページ上で、最もよく行う操作といえばボタンのクリックとフォームへの文字入力でしょう。Playwrightではlocatorで対象の要素を指定し、click()やfill()で操作します。
次のコードは、検索ボックスにキーワードを入力してボタンを押す流れを想定した例です。
出力結果
検索を実行しましたfill()は対象の入力欄に文字を書き込むメソッドで、既存の内容があれば上書きします。click()は指定した要素をクリックします。どちらも、locatorで要素を指定してから呼び出す形が基本です。
なお、これはイメージを掴むための擬似コードです。実際に動かす場合はURLを検索フォームのある実在のページに置き換えてください。
locatorの基本
locatorは、Playwrightがページ上のボタンやリンク、入力欄といった特定の要素を見つけ出すための仕組みです。「どの要素を操作するか」を指定するために使います。
代表的な指定方法は次の3つです。
- page.get_by_role():ボタン・リンク・テキスト入力欄といったHTMLの役割で要素を探す
- page.get_by_text():画面に表示されているテキストで要素を見つける
- page.locator():CSSセレクタなどを使ってより柔軟に指定する
locatorのポイントは、要素を見つけた瞬間に操作するのではなく、click()やfill()が呼ばれたタイミングで要素を探し、操作できる状態になるまで自動的に待つという動きをする点です。この仕組みのおかげで、ページの読み込みが遅い場合でも安定して動作しやすくなっています。
どのように指定すればよいかわからない場合は、後述するcodegenを使うと、実際の操作からlocatorのコードを自動生成できます。
エラーを減らす待機処理
昔と違って最近のWebページは、ボタンを押した後にデータを取得して表示したり、スクロールすると追加のコンテンツが読み込まれたりと、JavaScriptによって動的に内容が変わるものが多いです。
こうした動的なページを自動操作する場合に問題になるのが、操作したい要素がまだ画面に現れていないタイミングで操作しようとしてしまうケースです。例えば、ボタンをクリックした直後にまだ表示されていない結果のテキストを取得しようとすると、エラーになります。
Playwrightにはlocatorを使った操作に自動待機が組み込まれているため、多くの場面で特別なコードを書かなくても動作します。
ちなみに、特定の条件を満たすまで待ちたい場面では、page.wait_for_selector()やlocator.wait_for()を使って明示的に待機するのも可能です。
自動待機と明示的な待機処理をうまく使い分けられると、不安定な動作を防ぐことができます。
codegenとスクレイピングでの活用
Playwrightはブラウザ操作を自動化するだけでなく、コードを自動で生成する機能や、Webページから情報を取得する用途にも活用できます。
ここでは、そうした実践的な使い方を見ていきましょう。
codegenによる操作記録
「locatorの書き方がわからない」
「どうやって要素を指定すればいいか迷う」
そんなときに役立つのがcodegenです。
codegenは、Playwrightに備わっているコード生成機能です。ブラウザ上の実際の操作に対応する内容を、そのままPythonコードとして書き出してくれます。
具体的には、ターミナルやコマンドプロンプトでplaywright codegenと入力するとブラウザが開きます。その状態でクリックや文字入力などの操作を行うと、横のウィンドウにリアルタイムでコードが生成されます。
画面上の要素をクリックするだけで、その要素を指定するlocatorが自動的にコードとして出力されるため、HTMLの構造を自分で調べる手間が大幅に省けます。
生成されたコードはそのままコピーして使えるため、Playwrightに慣れていない段階でも生成されたコードを元に内容を理解していくという学習の進め方もおすすめです。
スクレイピングの基本
スクレイピングとは、Webページに表示されている情報をプログラムで自動的に取得する技術です。例えば「このサイトの商品一覧を毎日自動で取得したい」場合や「ニュースの見出しをまとめて収集したい」といった場面で使われます。
Playwrightを使ったスクレイピングの特徴は、実際にブラウザでページを開いて情報を取得する点です。HTMLを直接取得する方法では対応が難しい、JavaScriptで動的に表示される内容も取得できます。
基本的な流れは3ステップです。
まずページを開き、次にlocatorで取得したい要素を指定し、最後にtext_content()やinner_text()といったメソッドで表示内容を取り出します。
ただし、スクレイピングを行う前には必ず対象サイトの利用規約を確認してください。サイトによってはプログラムによるアクセスを禁止している場合があるためです。
スクレイピング時の注意点
スクレイピングは便利な機能ですが、使う際には注意する点がいくつかあります。1つずつ見ていきましょう。
利用規約の確認
スクレイピングや自動アクセスを禁止しているサイトは少なくありません。規約に違反すると、アクセスを遮断されるだけでなく、法的な問題に発展するケースもあります。実施前に必ず確認しましょう。
アクセス頻度への配慮
短い間隔で大量のリクエストを送ると、相手のサーバーに過剰な負荷をかけてしまいます。1回のアクセスごとに数秒の間隔を入れるなど、常識的な範囲でのアクセスを心がけてください。
ログインが必要なページ
ログインしないと閲覧できないページからの情報取得は、利用規約でさらに厳しく制限されているケースが多いです。特に慎重に判断しましょう。
個人情報の取り扱い
取得したデータに個人情報が含まれる場合は、個人情報保護法などの法令に基づいた適切な取り扱いが必要です。技術的に取得できるからといって、何でも集めてよいわけではありません。
mcpとの関係
Playwrightについて調べていると、「Playwright MCP」という言葉を見かけることがあると思います。名前が似ていますが、Playwrightとは別物です。
Playwright MCPとは、AIがブラウザを操作する際にPlaywrightの機能を利用する仕組みです。MCPはModel Context Protocolの略で、AIツールが外部の機能を利用するための規格を指しています。
通常のPlaywrightは人がPythonコードを書いてブラウザへの指示を出しますが、Playwright MCPではAIがページの構造を読み取り、AIが自ら判断しながら操作を実行します。仕組みとしては関連していますが、使う目的と対象が異なります。
まずはPlaywrightの基本的な使い方の理解に集中し、MCPについては必要になったときに改めて活用を検討するのがよいでしょう。
よくある質問(Q&A)
Q. 同期APIと非同期APIの違いは?
Playwrightには sync_api と async_api の2種類があります。
同期APIはコードが上から順に実行される書き方で、シンプルでわかりやすいのが特徴です。
非同期APIはasync/awaitを使う書き方で、複数の処理を効率的に進めたい場合に向いています。初心者の方は、まず同期APIから始めるのがおすすめです。
Q. ヘッドレスモードとは何ですか?
ヘッドレスモードとは、ブラウザの画面を表示せずにバックグラウンドで動かす方式のことです。Playwrightは初期設定でヘッドレスモードが有効になっています。
画面を表示して動作を確認したい場合は、launch(headless=False) と指定してください。
Q. 操作対象の要素が見つからない場合は?
locatorで指定した要素がページ上に存在しないと、タイムアウトエラーが発生します。codegenを使って正しいlocatorを確認するか、ページが完全に読み込まれているかを見直してください。
タイムアウトの待ち時間は timeout 引数で調整できます。
Q. スクリーンショットの保存方法は?
page.screenshot(path="ファイル名.png") で、現在の画面をPNG画像として保存できます。ページ全体を撮影したい場合は full_page=True を追加してください。テスト結果の記録や、表示崩れの確認に便利です。
Q. 複数のブラウザで同時にテストできますか?
はい。Playwrightは1つのスクリプト内でChromium、Firefox、WebKitの3種類のブラウザを順番に、または並行して操作できます。ブラウザごとに表示が異なる問題を見つけたい場合に有用です。
まとめ
この記事では、Playwrightの基本から実際の使い方までを解説してきました。
Playwrightは、ブラウザ操作の自動化をPythonで手軽に始められるツールであり、テストの効率化や日常業務の自動化など幅広い用途に対応しています。
Playwrightを活用したいのは、次のような場面です。
Playwrightが活躍する場面
- Webアプリケーションのログインや入力操作を自動でテストしたいとき
- 毎日繰り返している同じブラウザ操作を自動化したいとき
- Webページから情報を取得してデータとして活用したいとき
Playwrightについて、重要なポイントをまとめます。
重要なポイント
- Pythonコードでブラウザの操作を自動化できるライブラリである
- 利用を始めるには、ライブラリ本体と専用ブラウザのインストールが必要
- locatorと自動待機の仕組みにより、安定したブラウザ操作が実現しやすい
- codegenを利用すると、手動の操作に対応したPythonコードを自動生成できる
- スクレイピングでは利用規約やアクセス頻度への配慮が必要
PlaywrightはMicrosoftが継続的に開発しており、公式ドキュメントも充実しています。プログラミング初心者の方でも比較的スムーズにブラウザ自動操作を始められます。
実際に使ってみると、そんなに難しくないことも実感できるでしょう。
Playwrightを活用できるというのは、これまで手作業でやっていたブラウザ操作をコードに置き換えられるようになるということです。
それは、単調な繰り返しの作業から解放され、より重要なタスクに時間を使えるということでもあります。
まずは、試しに簡単なコードから動かして、Playwrightの便利さを体験してみてください。