BrowserContext
BrowserContext は、複数の独立したブラウザセッションを操作する方法を提供します。
ページが別のページを開く場合(例: `window.open` の呼び出し)、ポップアップは親ページのブラウザコンテキストに属します。
Playwright は、`browser.new_context()` メソッドで分離された非永続的なブラウザコンテキストを作成できます。非永続的なブラウザコンテキストは、ブラウジングデータをディスクに書き込みません。
- 同期
- 非同期
# 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より前に追加このブラウザコンテキストにクッキーを追加します。このコンテキスト内のすべてのページにはこれらのクッキーがインストールされます。クッキーは `browser_context.cookies()` で取得できます。
使用方法
- 同期
- 非同期
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
str (任意)クッキーがすべてのサブドメインにも適用されるようにするには、ドメインの前にドットを付けます(例: ".example.com")。URLまたはドメイン/パスのいずれかが必要です。任意。
-
path
str (任意)URLまたはドメイン/パスのいずれかが必要です。任意。
-
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;
- 同期
- 非同期
# 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より前に追加コンテキストからクッキーを削除します。オプションのフィルターを受け入れます。
使用方法
- 同期
- 非同期
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#指定されたドメインを持つクッキーのみを削除します。
-
name
str | Pattern (任意)追加されたバージョン: v1.43#指定された名前を持つクッキーのみを削除します。
-
path
str | Pattern (任意)追加されたバージョン: v1.43#指定されたパスを持つクッキーのみを削除します。
戻り値
clear_permissions
v1.9より前に追加ブラウザコンテキストのすべてのパーミッション上書きをクリアします。
使用方法
- 同期
- 非同期
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が指定されていない場合、このメソッドはすべてのクッキーを返します。URLが指定されている場合、それらのURLに影響するクッキーのみが返されます。
使用方法
browser_context.cookies()
browser_context.cookies(**kwargs)
引数
戻り値
expect_console_message
追加されたバージョン: v1.34アクションを実行し、コンテキスト内のページによって `ConsoleMessage` がログに記録されるのを待ちます。述語が提供されている場合、`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より前に追加イベントが発火するのを待ち、その値を述語関数に渡します。述語が真値を返したときに返却します。イベントが発火する前にコンテキストが閉じられた場合、エラーをスローします。イベントデータ値を返します。
使用方法
- 同期
- 非同期
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` が作成されるのを待ちます。述語が提供されている場合、`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を公開する例
- 同期
- 非同期
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のコンテキストで呼び出されるコールバック関数。
-
非推奨
このオプションは将来削除される予定です。
引数を値渡しではなく、ハンドルとして渡すかどうか。ハンドルとして渡す場合、引数は1つのみサポートされます。値渡しの場合、複数の引数がサポートされます。
戻り値
expose_function
v1.9より前に追加このメソッドは、コンテキスト内のすべてのページのすべてのフレームの `window` オブジェクトに `name` という関数を追加します。呼び出されると、この関数は `callback` を実行し、`callback` の戻り値に解決される `Promise` を返します。
`callback` が `Promise` を返す場合、それが待機されます。
ページ専用バージョンについては、`page.expose_function()` を参照してください。
使用方法
コンテキスト内のすべてのページに `sha256` 関数を追加する例
- 同期
- 非同期
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())
引数
戻り値
grant_permissions
v1.9より前に追加ブラウザコンテキストに指定されたパーミッションを付与します。指定された場合、対応するパーミッションは指定されたオリジンにのみ付与されます。
使用方法
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_workers` を `'block'` に設定してサービスワーカーを無効にすることをお勧めします。
使用方法
すべての画像リクエストを中止する単純なハンドラの例
- 同期
- 非同期
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()
または、代わりに正規表現パターンを使用する同じスニペット
- 同期
- 非同期
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()
リクエストを調べてルーティングアクションを決定することができます。例えば、特定のPOSTデータを含むすべてのリクエストをモックし、他のすべてのリクエストはそのままにするなど。
- 同期
- 非同期
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#ルーティング中に照合する URL を受け取るグロブパターン、正規表現パターン、または述語。`base_url` がコンテキストオプションで設定されており、提供されたURLが `*` で始まらない文字列の場合、`new URL()` コンストラクターを使用して解決されます。
-
handler
Callable[Route, Request]:Promise[Any] | Any#リクエストをルーティングするためのハンドラ関数。
-
times
int (任意)追加されたバージョン: v1.15#ルートが使用される頻度。デフォルトでは毎回使用されます。
戻り値
route_from_har
追加されたバージョン: v1.23指定された場合、コンテキストで行われるネットワークリクエストはHARファイルから提供されます。HARからの再生 について詳しくはこちらをご覧ください。
Playwrightはサービスワーカーによって傍受されたリクエストをHARファイルから提供しません。この 問題を参照してください。リクエスト傍受を使用する場合は、`service_workers` を `'block'` に設定してサービスワーカーを無効にすることをお勧めします。
使用方法
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' に設定されている場合、ハンドラチェーン内の次のルートハンドラにフォールバックします。
デフォルトは中止です。
-
指定されている場合、ファイルから提供する代わりに、実際のネットワーク情報で指定されたHARを更新します。ファイルは `browser_context.close()` が呼び出されたときにディスクに書き込まれます。
-
update_content
"embed" | "attach" (任意)追加されたバージョン: v1.32#リソースコンテンツ管理を制御するオプション設定。`attach` が指定されている場合、リソースは個別のファイルまたはZIPアーカイブのエントリとして永続化されます。`embed` が指定されている場合、コンテンツはHARファイル内にインラインで保存されます。
-
update_mode
"full" | "minimal" (任意)追加されたバージョン: v1.32#`minimal` に設定されている場合、HARからのルーティングに必要な情報のみを記録します。これにより、HARからの再生時に使用されないサイズ、タイミング、ページ、クッキー、セキュリティ、その他の種類のHAR情報は省略されます。デフォルトは `minimal` です。
-
リクエストURLに一致させるためのグロブパターン、正規表現、または述語。パターンに一致するURLを持つリクエストのみがHARファイルから提供されます。指定されていない場合、すべてのリクエストがHARファイルから提供されます。
戻り値
route_web_socket
追加されたバージョン: v1.48このメソッドは、ブラウザコンテキスト内の任意のページによって行われるWebSocket接続を変更することを可能にします。
このメソッドが呼び出された後に作成された `WebSocket` のみがルーティングされることに注意してください。ページを作成する前にこのメソッドを呼び出すことをお勧めします。
使用方法
以下は、一部のWebSocketメッセージをブロックする簡単なハンドラの例です。詳細と例については、`WebSocketRoute` を参照してください。
- 同期
- 非同期
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` コンテキストオプションに対して相対的に指定できます。
-
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` を渡すと、位置が利用できないことをエミュレートします。
使用方法
- 同期
- 非同期
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より前に追加このブラウザコンテキストのストレージ状態を返します。現在のクッキー、ローカルストレージのスナップショット、IndexedDBのスナップショットが含まれます。
使用方法
browser_context.storage_state()
browser_context.storage_state(**kwargs)
引数
-
indexed_db
bool (任意)追加されたバージョン: v1.51#ストレージ状態のスナップショットに `IndexedDB` を含めるには `true` に設定します。アプリケーションがFirebase認証などの認証トークンを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` を受け取るグロブパターン、正規表現パターン、または述語。
-
handler
Callable[Route, Request]:Promise[Any] | Any (任意)#`browser_context.route()` でルーティングを登録するために使用されるオプションのハンドラ関数。
戻り値
unroute_all
追加されたバージョン: v1.41`browser_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(event)` が真値を返すのを待ちます。`event` が発火する前にブラウザコンテキストが閉じられた場合、エラーをスローします。
使用方法
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
追加されたバージョン: v1.45Playwrightは、クロックと時間の経過をモックする機能を持っています。
使用方法
browser_context.clock
タイプ
pages
v1.9より前に追加コンテキスト内の開いているすべてのページを返します。
使用方法
browser_context.pages
戻り値
request
追加されたバージョン: v1.16このコンテキストに関連付けられたAPIテストヘルパー。このAPIで行われたリクエストはコンテキストのクッキーを使用します。
使用方法
browser_context.request
タイプ
service_workers
追加されたバージョン: v1.11サービスワーカーはChromiumベースのブラウザでのみサポートされています。
コンテキスト内のすべての既存のサービスワーカー。
使用方法
browser_context.service_workers
戻り値
tracing
追加されたバージョン: v1.12使用方法
browser_context.tracing
タイプ
イベント
on("backgroundpage")
追加されたバージョン: v1.11Chromiumブラウザの永続コンテキストでのみ動作します。
コンテキストで新しいバックグラウンドページが作成されたときに発行されます。
- 同期
- 非同期
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.log` や `console.dir` などのコンソールAPIメソッドのいずれかを呼び出したときに発行されます。
`console.log` に渡された引数とページは、`ConsoleMessage` イベントハンドラ引数で利用できます。
使用方法
- 同期
- 非同期
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.34`alert`、`prompt`、`confirm`、`beforeunload` などのJavaScriptダイアログが表示されたときに発行されます。リスナーはダイアログを `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")` を使用してください。
- 同期
- 非同期
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")
追加されたバージョン: v1.12このコンテキストを通じて作成された任意のページからリクエストが発行されたときに発行されます。`request` オブジェクトは読み取り専用です。特定のページからのリクエストのみをリッスンするには、`page.on("request")` を使用してください。
リクエストを傍受して変更するには、`browser_context.route()` または `page.route()` を参照してください。
使用方法
browser_context.on("request", handler)
イベントデータ
on("requestfailed")
追加されたバージョン: v1.12リクエストが失敗した場合(例: タイムアウトによる)に発行されます。特定のページからの失敗したリクエストのみをリッスンするには、`page.on("requestfailed")` を使用してください。
404や503などのHTTPエラーレスポンスは、HTTPの観点からは依然として成功したレスポンスであるため、リクエストは `browser_context.on("requestfinished")` イベントで完了し、`browser_context.on("requestfailed")` では完了しません。
使用方法
browser_context.on("requestfailed", handler)
イベントデータ
on("requestfinished")
追加されたバージョン: v1.12レスポンスボディのダウンロード後にリクエストが正常に完了したときに発行されます。成功したレスポンスの場合、イベントのシーケンスは `request`、`response`、`requestfinished` です。特定のページからの成功したリクエストをリッスンするには、`page.on("requestfinished")` を使用してください。
使用方法
browser_context.on("requestfinished", handler)
イベントデータ
on("response")
追加されたバージョン: 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")
追加されたバージョン: v1.38このコンテキスト内のいずれかのページで例外が未処理になったときに発行されます。特定のページからのエラーをリッスンするには、代わりに `page.on("pageerror")` を使用してください。
使用方法
browser_context.on("weberror", handler)
イベントデータ