
Playwright を使っていると、browser.new_context()
というコードをよく見かけます。
一見すると何をしているのか分かりづらいかもしれませんが、これは「新しいブラウザのユーザー環境(コンテキスト)を作る」ための基本構文です。
この記事では、.new_context()
の意味と役割、そして実際の使い方について、初心者の方にもわかりやすく解説します。
以下のように、初心者にもより伝わりやすく、章タイトルに沿った内容へ再構築できます。
.new_context() とは?「まっさらなブラウザ環境」をつくる仕組み
.new_context()
は、Playwright で「まっさらな状態のブラウザ環境(=コンテキスト)」を作るための命令です。
ここで言う「コンテキスト」とは、クッキー・ログイン状態・キャッシュなどをまるごと管理するセットのことです。
たとえば、次のようなケースで役立ちます:
- ログイン前のユーザーと、ログイン後のユーザーを同時にテストしたい
- 異なるアカウントで同じサイトにアクセスして挙動を比較したい
- テスト時にキャッシュやセッションの影響を受けたくない
こうした状況では、.new_context()
を使うことでまっさらな状態(=誰もログインしていない新しいブラウザ)を再現できます。
通常の browser.new_page()
では、すべてのページが同じセッション情報を共有しますが、browser.new_context()
を使えば、完全に別のセッションでページを開くことができるのです。
この仕組みを使えば、Playwright でより柔軟で実践的なテストが行えるようになります。
open() に相当するのが browser.new_context()
ファイル操作で言うところの open()
がファイルの入り口になるように、Playwright において browser.new_context()
は新しいテスト環境を開く入口になります。
その後、context.new_page()
を使うことで、そのコンテキスト内でのページ操作が始まります。
context とはどんなもの?
この context は「ブラウザの1セッション」に相当するものです。
ログイン状態、ローカルストレージ、クッキーなどを管理している単位であり、複数同時に開くこともできます。
もう少し専門的に言うと、.new_context()
は Playwright の BrowserContext
クラスのインスタンスを返します。これは .new_page()
や .storage_state()
など、さまざまなセッション管理機能を備えたオブジェクトです。
ちなみにcontext
という名前は変数名なので、別の名前にしても構いません。
ただ、慣例として context
がよく使われます。
具体例①:シンプルにコンテキストからページを開く
ログイン状態がない、まっさらな状態でページを開いて中身を確認したいときはこうします。
1 2 3 4 5 6 7 8 9 10 | from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() context = browser.new_context() page = context.new_page() page.goto("https://example.com") print(page.title()) browser.close() |
このコードでは:
browser.new_context()
で新しいセッションを作成- その中で
page = context.new_page()
によりページを開く - まっさらな状態なので、ログイン状態やCookieの影響を受けずに検証できる
具体例②:異なるユーザーで2つのページを同時に開く
ログイン状態を切り分けて、それぞれのユーザーで同じサイトを同時に操作したい場合はこうします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() context1 = browser.new_context() context2 = browser.new_context() page1 = context1.new_page() page2 = context2.new_page() page1.goto("https://example.com/login") page2.goto("https://example.com/login") # それぞれ別のユーザーでログイン処理を行える # 例えばpage1でuserA、page2でuserBをログイン browser.close() |
このコードでは:
context1
とcontext2
は完全に独立したブラウザ状態- それぞれ別のCookie・セッション・ストレージを持つ
- ログインユーザーの切り分けテストや多重ログイン動作確認に便利
よく使う使い方まとめ
コード | 意味 |
---|---|
browser.new_context() | 新しいセッションを開始する |
context.new_page() | そのセッション内で新しいページを開く |
context.storage_state() | 現在の状態(クッキーなど)をJSONで保存 |
browser.new_context(storage_state="user.json") | 保存された状態で復元して新しいセッションを開始 |
まとめ
Playwright を使って効率的にWebの自動操作やテストを行うには、.new_context()
の理解がとても重要です。
特に、ユーザーごとに異なるセッション(ログイン状態やクッキーなど)を分けてテストしたい場合や、毎回まっさらな状態で検証したい場合に不可欠な機能です。
この構文を使いこなすことで、Playwrightのテストや自動化スクリプトがグッと柔軟で信頼性の高いものになります。
以下が .new_context()
のポイントです:
.new_context()
は Playwright で**新しいセッション(ブラウザコンテキスト)**を作るための基本構文- Cookie、ログイン状態、ローカルストレージなどを完全に分離して扱える
- 複数のユーザー状態やセッションを同時にテストしたいときに特に有効
.new_context()
のあとに.new_page()
を使ってページ操作を開始するのが基本の流れ
Playwright を本格的に使いこなしたい方は、ぜひこの .new_context()
をしっかり理解して、自分のプロジェクトにも取り入れてみてください。