BrowserContext
BrowserContext (ブラウザコンテキスト) は、複数の独立したブラウザセッションを操作する方法を提供します。
例えば、ページが `window.open` 呼び出しで別のページを開いた場合、ポップアップは親ページのブラウザコンテキストに属します。
Playwright (プレイライト) では、browser.new_context() メソッドを使用して、分離された非永続的なブラウザコンテキストを作成できます。非永続的なブラウザコンテキストは、ブラウジングデータをディスクに書き込みません。
- Sync (同期)
- Async (非同期)
# create a new incognito browser context
context = browser.new_context()
# create a new page inside context.
page = context.new_page()
page.goto("https://example.com")
# dispose context once it is no longer needed.
context.close()
# create a new incognito browser context
context = await browser.new_context()
# create a new page inside context.
page = await context.new_page()
await page.goto("https://example.com")
# dispose context once it is no longer needed.
await context.close()
メソッド
add_cookies
v1.9 より前に追加このブラウザコンテキストに Cookie (クッキー) を追加します。このコンテキスト内のすべてのページには、これらの Cookie (クッキー) がインストールされます。Cookie (クッキー) は、browser_context.cookies() を介して取得できます。
使用例
- Sync (同期)
- Async (非同期)
browser_context.add_cookies([cookie_object1, cookie_object2])
await browser_context.add_cookies([cookie_object1, cookie_object2])
引数
cookies
List[Dict]#-
name
str -
value
str -
url
str (オプション)url または domain / path (ドメイン/パス) のいずれかが必須です。オプション。
-
domain
str (オプション)Cookie (クッキー) をすべてのサブドメインにも適用するには、ドメインの先頭にドットを付けます (".example.com" など)。url または domain / path (ドメイン/パス) のいずれかが必須です。オプション。
-
path
str (オプション)url または domain / path (ドメイン/パス) のいずれかが必須です。オプション。
-
expires
float (オプション)Unix (ユニックス) 時間 (秒単位)。オプション。
-
httpOnly
bool (オプション)オプション。
-
secure
bool (オプション)オプション。
-
sameSite
"Strict" | "Lax" | "None" (オプション)オプション。
-
戻り値
add_init_script
v1.9 より前に追加次のいずれかのシナリオで評価されるスクリプトを追加します。
- ブラウザコンテキストでページが作成またはナビゲートされるとき。
- ブラウザコンテキスト内の任意のページで子フレームがアタッチまたはナビゲートされるとき。この場合、スクリプトは新しくアタッチされたフレームのコンテキストで評価されます。
スクリプトは、ドキュメントが作成された後、そのスクリプトが実行される前に評価されます。これは、JavaScript (ジャバスクリプト) 環境を修正するのに役立ちます。例えば、`Math.random` をシードするなどです。
使用例
ページロード前に `Math.random` をオーバーライドする例
// preload.js
Math.random = () => 42;
- Sync (同期)
- Async (非同期)
# in your playwright script, assuming the preload.js file is in same directory.
browser_context.add_init_script(path="preload.js")
# in your playwright script, assuming the preload.js file is in same directory.
await browser_context.add_init_script(path="preload.js")
browser_context.add_init_script() および page.add_init_script() を介してインストールされた複数のスクリプトの評価順序は定義されていません。
引数
-
path
Union[str, pathlib.Path] (オプション)#JavaScript (ジャバスクリプト) ファイルへのパス。`path` が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。オプション。
-
ブラウザコンテキスト内のすべてのページで評価されるスクリプト。オプション。
戻り値
clear_cookies
v1.9 より前に追加コンテキストから Cookie (クッキー) を削除します。オプションのフィルターを受け入れます。
使用例
- Sync (同期)
- Async (非同期)
context.clear_cookies()
context.clear_cookies(name="session-id")
context.clear_cookies(domain="my-origin.com")
context.clear_cookies(path="/api/v1")
context.clear_cookies(name="session-id", domain="my-origin.com")
await context.clear_cookies()
await context.clear_cookies(name="session-id")
await context.clear_cookies(domain="my-origin.com")
await context.clear_cookies(path="/api/v1")
await context.clear_cookies(name="session-id", domain="my-origin.com")
引数
-
domain
str | Pattern (オプション)追加: v1.43#指定されたドメインの Cookie (クッキー) のみを削除します。
-
name
str | Pattern (オプション)追加: v1.43#指定された名前の Cookie (クッキー) のみを削除します。
-
path
str | Pattern (オプション)追加: v1.43#指定されたパスの Cookie (クッキー) のみを削除します。
戻り値
clear_permissions
v1.9 より前に追加ブラウザコンテキストのすべての権限オーバーライドをクリアします。
使用例
- Sync (同期)
- Async (非同期)
context = browser.new_context()
context.grant_permissions(["clipboard-read"])
# do stuff ..
context.clear_permissions()
context = await browser.new_context()
await context.grant_permissions(["clipboard-read"])
# do stuff ..
context.clear_permissions()
戻り値
close
v1.9 より前に追加ブラウザコンテキストを閉じます。ブラウザコンテキストに属するすべてのページが閉じられます。
デフォルトのブラウザコンテキストは閉じることができません。
使用例
browser_context.close()
browser_context.close(**kwargs)
引数
戻り値
cookies
v1.9 より前に追加URL が指定されていない場合、このメソッドはすべての Cookie (クッキー) を返します。URL が指定されている場合、それらの URL に影響を与える Cookie (クッキー) のみが返されます。
使用例
browser_context.cookies()
browser_context.cookies(**kwargs)
引数
戻り値
expect_console_message
追加: v1.34アクションを実行し、コンテキスト内のページによってログに記録される ConsoleMessage (コンソールメッセージ) を待ちます。predicate (述語) が提供されている場合、ConsoleMessage (コンソールメッセージ) 値を `predicate` 関数に渡し、`predicate(message)` が真の値を返すのを待ちます。browser_context.on("console") イベントが発行される前にページが閉じられた場合、エラーがスローされます。
使用例
browser_context.expect_console_message()
browser_context.expect_console_message(**kwargs)
引数
-
predicate
Callable[ConsoleMessage]:bool (オプション)#ConsoleMessage (コンソールメッセージ) オブジェクトを受け取り、待機が解決されるべきときに真の値に解決します。
-
最大待機時間 (ミリ秒単位)。デフォルトは `30000` (30 秒) です。タイムアウトを無効にするには `0` を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_event
v1.9 より前に追加イベントが発行されるのを待ち、その値を predicate (述語) 関数に渡します。predicate (述語) が真の値を返すと戻ります。イベントが発行される前にコンテキストが閉じられた場合、エラーがスローされます。イベントデータ値を返します。
使用例
- Sync (同期)
- Async (非同期)
with context.expect_event("page") as event_info:
page.get_by_role("button").click()
page = event_info.value
async with context.expect_event("page") as event_info:
await page.get_by_role("button").click()
page = await event_info.value
引数
-
イベント名。`browserContext.on(event)` に渡すものと同じです。
-
イベントデータを受け取り、待機が解決されるべきときに真の値に解決します。
-
最大待機時間 (ミリ秒単位)。デフォルトは `30000` (30 秒) です。タイムアウトを無効にするには `0` を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expect_page
追加: v1.9アクションを実行し、コンテキストに新しい Page (ページ) が作成されるのを待ちます。predicate (述語) が提供されている場合、Page (ページ) 値を `predicate` 関数に渡し、`predicate(event)` が真の値を返すのを待ちます。新しい Page (ページ) が作成される前にコンテキストが閉じられた場合、エラーがスローされます。
使用例
browser_context.expect_page()
browser_context.expect_page(**kwargs)
引数
-
predicate
Callable[Page]:bool (オプション)#Page (ページ) オブジェクトを受け取り、待機が解決されるべきときに真の値に解決します。
-
最大待機時間 (ミリ秒単位)。デフォルトは `30000` (30 秒) です。タイムアウトを無効にするには `0` を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
expose_binding
v1.9 より前に追加このメソッドは、コンテキスト内のすべてのページのすべてのフレームの `window` オブジェクトに、name (名前) という名前の関数を追加します。呼び出されると、関数は callback (コールバック) を実行し、callback (コールバック) の戻り値に解決される Promise (プロミス) を返します。callback (コールバック) が Promise (プロミス) を返す場合、それは待機されます。
callback (コールバック) 関数の最初の引数には、呼び出し元に関する情報 ({ browserContext: BrowserContext, page: Page, frame: Frame }
) が含まれています。
ページ専用のバージョンについては、page.expose_binding() を参照してください。
使用例
コンテキスト内のすべてのページのすべてのフレームにページ URL (ユーアールエル) を公開する例
- Sync (同期)
- Async (非同期)
from playwright.sync_api import sync_playwright, Playwright
def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
context = browser.new_context()
context.expose_binding("pageURL", lambda source: source["page"].url)
page = context.new_page()
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
page.get_by_role("button").click()
with sync_playwright() as playwright:
run(playwright)
import asyncio
from playwright.async_api import async_playwright, Playwright
async def run(playwright: Playwright):
webkit = playwright.webkit
browser = await webkit.launch(headless=False)
context = await browser.new_context()
await context.expose_binding("pageURL", lambda source: source["page"].url)
page = await context.new_page()
await page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.pageURL();
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
await page.get_by_role("button").click()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
引数
-
window (ウィンドウ) オブジェクト上の関数名。
-
Playwright (プレイライト) のコンテキストで呼び出されるコールバック関数。
-
非推奨
このオプションは将来削除される予定です。
値渡しではなく、引数を handle (ハンドル) として渡すかどうか。handle (ハンドル) を渡す場合、1 つの引数のみがサポートされます。値渡しの場合、複数の引数がサポートされます。
戻り値
expose_function
v1.9 より前に追加このメソッドは、コンテキスト内のすべてのページのすべてのフレームの `window` オブジェクトに、name (名前) という名前の関数を追加します。呼び出されると、関数は callback (コールバック) を実行し、callback (コールバック) の戻り値に解決される Promise (プロミス) を返します。
callback (コールバック) が Promise (プロミス) を返す場合、それは待機されます。
ページ専用のバージョンについては、page.expose_function() を参照してください。
使用例
コンテキスト内のすべてのページに `sha256` 関数を追加する例
- Sync (同期)
- Async (非同期)
import hashlib
from playwright.sync_api import sync_playwright
def sha256(text: str) -> str:
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()
def run(playwright: Playwright):
webkit = playwright.webkit
browser = webkit.launch(headless=False)
context = browser.new_context()
context.expose_function("sha256", sha256)
page = context.new_page()
page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
page.get_by_role("button").click()
with sync_playwright() as playwright:
run(playwright)
import asyncio
import hashlib
from playwright.async_api import async_playwright, Playwright
def sha256(text: str) -> str:
m = hashlib.sha256()
m.update(bytes(text, "utf8"))
return m.hexdigest()
async def run(playwright: Playwright):
webkit = playwright.webkit
browser = await webkit.launch(headless=False)
context = await browser.new_context()
await context.expose_function("sha256", sha256)
page = await context.new_page()
await page.set_content("""
<script>
async function onClick() {
document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');
}
</script>
<button onclick="onClick()">Click me</button>
<div></div>
""")
await page.get_by_role("button").click()
async def main():
async with async_playwright() as playwright:
await run(playwright)
asyncio.run(main())
引数
-
window (ウィンドウ) オブジェクト上の関数名。
-
Playwright (プレイライト) のコンテキストで呼び出されるコールバック関数。
戻り値
grant_permissions
v1.9 より前に追加指定された権限をブラウザコンテキストに付与します。指定された origin (オリジン) にのみ、対応する権限を付与します (指定されている場合)。
使用例
browser_context.grant_permissions(permissions)
browser_context.grant_permissions(permissions, **kwargs)
引数
-
付与する権限のリスト。
危険サポートされている権限は、ブラウザ間、さらには同じブラウザの異なるバージョン間でも異なります。任意の権限は、アップデート後に動作しなくなる可能性があります。
いくつかのブラウザでサポートされている可能性のある権限を以下に示します。
'accelerometer'
'ambient-light-sensor'
'background-sync'
'camera'
'clipboard-read'
'clipboard-write'
'geolocation'
'gyroscope'
'magnetometer'
'microphone'
'midi-sysex'
(system-exclusive midi)'midi'
'notifications'
'payment-handler'
'storage-access'
-
権限を付与する origin (オリジン) (例: "https://example.com")。
戻り値
new_cdp_session
追加: v1.11CDP (シーディーピー) セッションは、Chromium (クロミウム) ベースのブラウザでのみサポートされています。
新しく作成されたセッションを返します。
使用例
browser_context.new_cdp_session(page)
引数
-
新しいセッションを作成するターゲット。後方互換性のため、このパラメータは `page` という名前ですが、`Page` または `Frame` タイプにすることができます。
戻り値
new_page
v1.9 より前に追加ブラウザコンテキストに新しいページを作成します。
使用例
browser_context.new_page()
戻り値
route
v1.9 より前に追加ルーティングは、ブラウザコンテキスト内の任意のページによって行われるネットワークリクエストを変更する機能を提供します。ルートが有効になると、url (ユーアールエル) パターンに一致するすべてのリクエストは、続行、完了、または中止されない限り、停止します。
browser_context.route() は、Service Worker (サービスワーカー) によってインターセプトされたリクエストをインターセプトしません。こちらの issue (課題) を参照してください。リクエストインターセプトを使用する場合は、service_workers を 'block'
に設定して Service Worker (サービスワーカー) を無効にすることをお勧めします。
使用例
すべての画像リクエストを中止するナイーブなハンドラーの例
- Sync (同期)
- Async (非同期)
context = browser.new_context()
page = context.new_page()
context.route("**/*.{png,jpg,jpeg}", lambda route: route.abort())
page.goto("https://example.com")
browser.close()
context = await browser.new_context()
page = await context.new_page()
await context.route("**/*.{png,jpg,jpeg}", lambda route: route.abort())
await page.goto("https://example.com")
await browser.close()
または、代わりに正規表現パターンを使用した同じスニペット
- Sync (同期)
- Async (非同期)
context = browser.new_context()
page = context.new_page()
context.route(re.compile(r"(\.png$)|(\.jpg$)"), lambda route: route.abort())
page = await context.new_page()
page = context.new_page()
page.goto("https://example.com")
browser.close()
context = await browser.new_context()
page = await context.new_page()
await context.route(re.compile(r"(\.png$)|(\.jpg$)"), lambda route: route.abort())
page = await context.new_page()
await page.goto("https://example.com")
await browser.close()
リクエストを調べてルートアクションを決定することが可能です。例えば、いくつかのポストデータを含むすべてのリクエストをモックし、他のすべてのリクエストをそのままにするなどです。
- Sync (同期)
- Async (非同期)
def handle_route(route: Route):
if ("my-string" in route.request.post_data):
route.fulfill(body="mocked-data")
else:
route.continue_()
context.route("/api/**", handle_route)
async def handle_route(route: Route):
if ("my-string" in route.request.post_data):
await route.fulfill(body="mocked-data")
else:
await route.continue_()
await context.route("/api/**", handle_route)
ページルート (page.route() で設定) は、リクエストが両方のハンドラーに一致する場合、ブラウザコンテキストルートよりも優先されます。
ハンドラー付きのルートを削除するには、browser_context.unroute() を使用できます。
ルーティングを有効にすると、http (エイチティーティーピー) キャッシュが無効になります。
引数
-
url
str | Pattern | Callable[URL]:bool#ルーティング中に一致させる glob (グロブ) パターン、正規表現パターン、または URL (ユーアールエル) を受信する predicate (述語)。コンテキストオプションを介して base_url (ベースURL) が提供され、渡された URL (ユーアールエル) がパスの場合、
new URL()
コンストラクタを介してマージされます。 -
handler
Callable[Route, Request]:Promise[Any] | Any#リクエストをルーティングするハンドラー関数。
-
ルートをどのくらいの頻度で使用する必要があるか。デフォルトでは、毎回使用されます。
戻り値
route_from_har
追加: v1.23指定した場合、コンテキストで行われるネットワークリクエストは、HAR (ハー) ファイルから提供されます。HAR (ハー) からのリプレイ について詳しくはこちらをご覧ください。
Playwright (プレイライト) は、Service Worker (サービスワーカー) によってインターセプトされたリクエストを HAR (ハー) ファイルから提供しません。こちらの issue (課題) を参照してください。リクエストインターセプトを使用する場合は、service_workers を 'block'
に設定して Service Worker (サービスワーカー) を無効にすることをお勧めします。
使用例
browser_context.route_from_har(har)
browser_context.route_from_har(har, **kwargs)
引数
-
har
Union[str, pathlib.Path]#事前記録されたネットワークデータを含む HAR (ハー) ファイルへのパス。`path` が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。
-
not_found
"abort" | "fallback" (オプション)#- 'abort' に設定すると、HAR (ハー) ファイルに見つからないリクエストはすべて中止されます。
- 'fallback' に設定すると、ハンドラーチェーンの次のルートハンドラーにフォールスルーします。
デフォルトは abort (中止) です。
-
指定した場合、ファイルから提供する代わりに、実際のネットワーク情報で指定された HAR (ハー) を更新します。ファイルは、browser_context.close() が呼び出されたときにディスクに書き込まれます。
-
update_content
"embed" | "attach" (オプション)追加: v1.32#リソースコンテンツ管理を制御するためのオプション設定。
attach
が指定されている場合、リソースは個別のファイルまたは ZIP (ジップ) アーカイブのエントリとして永続化されます。embed
が指定されている場合、コンテンツは HAR (ハー) ファイルにインラインで保存されます。 -
update_mode
"full" | "minimal" (オプション)追加: v1.32#minimal
に設定すると、HAR (ハー) からのルーティングに必要な情報のみを記録します。これにより、HAR (ハー) からのリプレイ時に使用されないサイズ、タイミング、ページ、Cookie (クッキー)、セキュリティ、およびその他のタイプの HAR (ハー) 情報が省略されます。デフォルトはminimal
です。 -
リクエスト URL (ユーアールエル) に一致する glob (グロブ) パターン、正規表現、または predicate (述語)。パターンに一致する URL (ユーアールエル) を持つリクエストのみが HAR (ハー) ファイルから提供されます。指定されていない場合、すべてのリクエストが HAR (ハー) ファイルから提供されます。
戻り値
route_web_socket
追加: v1.48このメソッドを使用すると、ブラウザコンテキスト内の任意のページによって行われる websocket (ウェブソケット) 接続を変更できます。
このメソッドが呼び出された後に作成された WebSocket
のみがルーティングされることに注意してください。ページを作成する前にこのメソッドを呼び出すことをお勧めします。
使用例
以下は、いくつかの websocket (ウェブソケット) メッセージをブロックする簡単なハンドラーの例です。詳細と例については、WebSocketRoute (ウェブソケットルート) を参照してください。
- Sync (同期)
- Async (非同期)
def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "to-be-blocked":
return
ws.send(message)
def handler(ws: WebSocketRoute):
ws.route_send(lambda message: message_handler(ws, message))
ws.connect()
context.route_web_socket("/ws", handler)
def message_handler(ws: WebSocketRoute, message: Union[str, bytes]):
if message == "to-be-blocked":
return
ws.send(message)
async def handler(ws: WebSocketRoute):
ws.route_send(lambda message: message_handler(ws, message))
await ws.connect()
await context.route_web_socket("/ws", handler)
引数
-
url
str | Pattern | Callable[URL]:bool#このパターンに一致する url (ユーアールエル) を持つ WebSocket (ウェブソケット) のみがルーティングされます。文字列パターンは、base_url (ベースURL) コンテキストオプションに対する相対パスにすることができます。
-
handler
Callable[WebSocketRoute]:Promise[Any] | Any#WebSocket (ウェブソケット) をルーティングするハンドラー関数。
戻り値
set_default_navigation_timeout
v1.9 より前に追加この設定は、以下のメソッドと関連するショートカットのデフォルトの最大ナビゲーション時間を変更します。
- page.go_back()
- page.go_forward()
- page.goto()
- page.reload()
- page.set_content()
- page.expect_navigation()
使用例
browser_context.set_default_navigation_timeout(timeout)
引数
set_default_timeout
v1.9 より前に追加この設定は、timeout オプションを受け入れるすべてのメソッドのデフォルトの最大時間を変更します。
使用例
browser_context.set_default_timeout(timeout)
引数
set_extra_http_headers
v1.9 より前に追加追加の HTTP ヘッダーは、コンテキスト内の任意のページによって開始されたすべてのリクエストとともに送信されます。これらのヘッダーは、page.set_extra_http_headers() で設定されたページ固有の追加 HTTP ヘッダーとマージされます。ページが特定のヘッダーをオーバーライドする場合、ブラウザコンテキストヘッダー値の代わりにページ固有のヘッダー値が使用されます。
browser_context.set_extra_http_headers() は、送信リクエスト内のヘッダーの順序を保証しません。
使用例
browser_context.set_extra_http_headers(headers)
引数
戻り値
set_geolocation
v1.9 より前に追加コンテキストの地理位置情報を設定します。null
または undefined
を渡すと、位置情報が利用できない状態をエミュレートします。
使用例
- Sync (同期)
- Async (非同期)
browser_context.set_geolocation({"latitude": 59.95, "longitude": 30.31667})
await browser_context.set_geolocation({"latitude": 59.95, "longitude": 30.31667})
browser_context.grant_permissions() を使用して、ブラウザコンテキストページが地理位置情報を読み取るための権限を付与することを検討してください。
引数
戻り値
set_offline
v1.9 より前に追加使用例
browser_context.set_offline(offline)
引数
戻り値
storage_state
v1.9 より前に追加このブラウザコンテキストのストレージ状態を返します。現在の Cookie、ローカルストレージのスナップショット、および IndexedDB のスナップショットが含まれています。
使用例
browser_context.storage_state()
browser_context.storage_state(**kwargs)
引数
-
indexed_db
bool (オプション)Added in: v1.51#ストレージ状態のスナップショットに IndexedDB を含めるには、
true
に設定します。アプリケーションが Firebase Authentication などの認証トークンを保存するために IndexedDB を使用している場合は、これを有効にしてください。注型付き配列を持つ IndexedDB は現在サポートされていません。
-
path
Union[str, pathlib.Path] (オプション)#ストレージ状態を保存するファイルパス。path が相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。パスが指定されていない場合でも、ストレージ状態は返されますが、ディスクには保存されません。
戻り値
unroute
v1.9 より前に追加browser_context.route() で作成されたルートを削除します。handler が指定されていない場合、url のすべてのルートを削除します。
使用例
browser_context.unroute(url)
browser_context.unroute(url, **kwargs)
引数
-
url
str | Pattern | Callable[URL]:bool#browser_context.route() でルーティングを登録するために使用される、URL を受信する glob パターン、正規表現パターン、または述語。
-
handler
Callable[Route, Request]:Promise[Any] | Any (オプション)#browser_context.route() でルーティングを登録するために使用されるオプションのハンドラー関数。
戻り値
unroute_all
Added in: v1.41browser_context.route() および browser_context.route_from_har() で作成されたすべてのルートを削除します。
使用例
browser_context.unroute_all()
browser_context.unroute_all(**kwargs)
引数
-
behavior
"wait" | "ignoreErrors" | "default" (オプション)#実行中のハンドラーが完了するのを待つかどうか、およびエラーをスローした場合の対処法を指定します
'default'
- 現在のハンドラー呼び出し(存在する場合)が完了するのを待たずに、ルーティング解除されたハンドラーがエラーをスローすると、未処理のエラーが発生する可能性があります'wait'
- 現在のハンドラー呼び出し(存在する場合)が完了するのを待ちます'ignoreErrors'
- 現在のハンドラー呼び出し(存在する場合)が完了するのを待たずに、ルーティング解除後にハンドラーによってスローされたすべてのエラーはサイレントにキャッチされます
戻り値
wait_for_event
v1.9 より前に追加ほとんどの場合、browser_context.expect_event() を使用する必要があります。
指定された event
が発生するのを待ちます。predicate
が指定されている場合、イベントの値を predicate
関数に渡し、predicate(event)
が truthy 値を返すのを待ちます。イベントが発生する前にブラウザコンテキストが閉じられた場合、エラーがスローされます。
使用例
browser_context.wait_for_event(event)
browser_context.wait_for_event(event, **kwargs)
引数
-
イベント名。通常、
*.on(event)
に渡されるものと同じです。 -
イベントデータを受け取り、待機が解決されるべきときに真の値に解決します。
-
最大待機時間 (ミリ秒単位)。デフォルトは `30000` (30 秒) です。タイムアウトを無効にするには `0` を渡します。デフォルト値は、browser_context.set_default_timeout() を使用して変更できます。
戻り値
プロパティ
background_pages
追加: v1.11バックグラウンドページは、Chromium ベースのブラウザでのみサポートされています。
コンテキスト内の既存のすべてのバックグラウンドページ。
使用例
browser_context.background_pages
戻り値
browser
v1.9 より前に追加コンテキストのブラウザインスタンスを返します。永続コンテキストとして起動された場合は null が返されます。
使用例
browser_context.browser
戻り値
clock
Added in: v1.45Playwright には、クロックと時間の経過をモックする機能があります。
使用例
browser_context.clock
型
pages
v1.9 より前に追加コンテキスト内の開いているすべてのページを返します。
使用例
browser_context.pages
戻り値
request
Added in: v1.16このコンテキストに関連付けられた API テストヘルパー。この API で作成されたリクエストは、コンテキスト Cookie を使用します。
使用例
browser_context.request
型
service_workers
追加: v1.11サービスワーカーは、Chromium ベースのブラウザでのみサポートされています。
コンテキスト内の既存のすべてのサービスワーカー。
使用例
browser_context.service_workers
戻り値
tracing
Added in: v1.12使用例
browser_context.tracing
型
イベント
on("backgroundpage")
追加: v1.11Chromium ブラウザの永続コンテキストでのみ動作します。
コンテキストで新しいバックグラウンドページが作成されたときに発行されます。
- Sync (同期)
- Async (非同期)
background_page = context.wait_for_event("backgroundpage")
background_page = await context.wait_for_event("backgroundpage")
使用例
browser_context.on("backgroundpage", handler)
イベントデータ
on("close")
v1.9 より前に追加ブラウザコンテキストが閉じられたときに発行されます。これは、次のいずれかの理由で発生する可能性があります。
- ブラウザコンテキストが閉じられました。
- ブラウザアプリケーションが閉じられたか、クラッシュしました。
- browser.close() メソッドが呼び出されました。
使用例
browser_context.on("close", handler)
イベントデータ
on("console")
追加: v1.34ページ内の JavaScript が console API メソッド (例: console.log
や console.dir
) のいずれかを呼び出したときに発行されます。
console.log
に渡された引数とページは、ConsoleMessage イベントハンドラー引数で使用できます。
使用例
- Sync (同期)
- Async (非同期)
def print_args(msg):
for arg in msg.args:
print(arg.json_value())
context.on("console", print_args)
page.evaluate("console.log('hello', 5, { foo: 'bar' })")
async def print_args(msg):
values = []
for arg in msg.args:
values.append(await arg.json_value())
print(values)
context.on("console", print_args)
await page.evaluate("console.log('hello', 5, { foo: 'bar' })")
イベントデータ
on("dialog")
追加: v1.34JavaScript ダイアログ (alert
、prompt
、confirm
、beforeunload
など) が表示されたときに発行されます。リスナーは、dialog.accept() または dialog.dismiss() のいずれかでダイアログを受け入れるか拒否する必要があります。そうしないと、ページはダイアログを待機してフリーズし、クリックなどのアクションは完了しません。
使用例
context.on("dialog", lambda dialog: dialog.accept())
page.on("dialog") または browser_context.on("dialog") リスナーが存在しない場合、すべてのダイアログは自動的に閉じられます。
イベントデータ
on("page")
v1.9 より前に追加このイベントは、BrowserContext で新しい Page が作成されたときに発行されます。ページはまだロード中である可能性があります。このイベントは、ポップアップページにも発行されます。特定のページに関連するポップアップに関するイベントを受信するには、page.on("popup") も参照してください。
ページが利用可能になる最も早い瞬間は、最初の URL にナビゲートしたときです。たとえば、window.open('http://example.com')
でポップアップを開くと、"http://example.com" へのネットワークリクエストが完了し、そのレスポンスがポップアップでのロードを開始したときに、このイベントが発生します。このネットワークリクエストをルーティング/リッスンする場合は、Page の同様のメソッドの代わりに、browser_context.route() と browser_context.on("request") をそれぞれ使用してください。
- Sync (同期)
- Async (非同期)
with context.expect_page() as page_info:
page.get_by_text("open new page").click(),
page = page_info.value
print(page.evaluate("location.href"))
async with context.expect_page() as page_info:
await page.get_by_text("open new page").click(),
page = await page_info.value
print(await page.evaluate("location.href"))
ページが特定の状態になるまで待機するには、page.wait_for_load_state() を使用します(ほとんどの場合、必要ありません)。
使用例
browser_context.on("page", handler)
イベントデータ
on("request")
Added in: v1.12このコンテキストを介して作成された任意のページからリクエストが発行されたときに発行されます。request オブジェクトは読み取り専用です。特定のページからのリクエストのみをリッスンするには、page.on("request") を使用してください。
リクエストをインターセプトして変更するには、browser_context.route() または page.route() を参照してください。
使用例
browser_context.on("request", handler)
イベントデータ
on("requestfailed")
Added in: v1.12リクエストが失敗した場合 (例: タイムアウトした場合) に発行されます。特定のページからの失敗したリクエストのみをリッスンするには、page.on("requestfailed") を使用してください。
404 や 503 などの HTTP エラーレスポンスは、HTTP の観点からは依然として成功したレスポンスであるため、リクエストは browser_context.on("requestfinished") イベントで完了し、browser_context.on("requestfailed") イベントでは完了しません。
使用例
browser_context.on("requestfailed", handler)
イベントデータ
on("requestfinished")
Added in: v1.12レスポンスボディのダウンロード後、リクエストが正常に完了したときに発行されます。成功したレスポンスの場合、イベントのシーケンスは request
、response
、および requestfinished
です。特定のページからの成功したリクエストをリッスンするには、page.on("requestfinished") を使用してください。
使用例
browser_context.on("requestfinished", handler)
イベントデータ
on("response")
Added in: v1.12リクエストに対する response ステータスとヘッダーを受信したときに発行されます。成功したレスポンスの場合、イベントのシーケンスは request
、response
、および requestfinished
です。特定のページからのレスポンスイベントをリッスンするには、page.on("response") を使用してください。
使用例
browser_context.on("response", handler)
イベントデータ
on("serviceworker")
追加: v1.11サービスワーカーは、Chromium ベースのブラウザでのみサポートされています。
コンテキストで新しいサービスワーカーが作成されたときに発行されます。
使用例
browser_context.on("serviceworker", handler)
イベントデータ
on("weberror")
Added in: v1.38このコンテキスト内のいずれかのページで例外が未処理の場合に発行されます。特定のページからのエラーをリッスンするには、代わりに page.on("pageerror") を使用してください。
使用例
browser_context.on("weberror", handler)
イベントデータ