BrowserContext
BrowserContext は、複数の独立したブラウザセッションを操作する方法を提供します。
ページが別のページを開いた場合 (例: window.open の呼び出しによる)、ポップアップは親ページのブラウザコンテキストに属します。
Playwright は、Browser.NewContextAsync() メソッドを使用して、分離された非永続的なブラウザコンテキストを作成できます。非永続的なブラウザコンテキストは、ブラウジングデータをディスクに書き込みません。
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Firefox.LaunchAsync(new() { Headless = false });
// Create a new incognito browser context
var context = await browser.NewContextAsync();
// Create a new page inside context.
var page = await context.NewPageAsync();
await page.GotoAsync("https://bing.com");
// Dispose context once it is no longer needed.
await context.CloseAsync();
メソッド
AddCookiesAsync
v1.9より前に追加このブラウザコンテキストにクッキーを追加します。このコンテキスト内のすべてのページには、これらのクッキーがインストールされます。クッキーは BrowserContext.CookiesAsync() を介して取得できます。
使用法
await context.AddCookiesAsync(new[] { cookie1, cookie2 });
引数
cookiesIEnumerable<Cookie>#-
Namestring -
Valuestring -
Urlstring? (任意)url または domain / path のいずれかが必須です。任意です。
-
Domainstring? (任意)クッキーをすべてのサブドメインにも適用するには、ドメインの前にドットを付けます (例: ".example.com")。url または domain / path のいずれかが必須です。任意です。
-
Pathstring? (任意)url または domain / path のいずれかが必須です。任意です。
-
Expires[float]? (任意)Unix 時間 (秒)。任意。
-
HttpOnlybool? (任意)任意。
-
Securebool? (任意)任意。
-
SameSiteenum SameSiteAttribute { Strict, Lax, None }?(任意)任意。
-
PartitionKeystring? (任意)分割されたサードパーティクッキー (別名 CHIPS) のパーティションキー。任意。
-
戻り値
AddInitScriptAsync
v1.9より前に追加以下のいずれかのシナリオで評価されるスクリプトを追加します。
- ブラウザコンテキスト内でページが作成されるか、ナビゲートされるたびに。
- ブラウザコンテキスト内の任意のページで子フレームがアタッチされるか、ナビゲートされるたびに。この場合、スクリプトは新しくアタッチされたフレームのコンテキストで評価されます。
スクリプトは、ドキュメントが作成された後、そのスクリプトが実行される前に評価されます。これは、JavaScript 環境を修正する場合に役立ちます (例: Math.random をシードする場合)。
使用法
ページが読み込まれる前に Math.random をオーバーライドする例
// preload.js
Math.random = () => 42;
await Context.AddInitScriptAsync(scriptPath: "preload.js");
BrowserContext.AddInitScriptAsync() と Page.AddInitScriptAsync() を介してインストールされた複数のスクリプトの評価順序は定義されていません。
引数
戻り値
BackgroundPages
追加されたバージョン: v1.11バックグラウンドページは Chromium ベースのブラウザでのみサポートされています。
コンテキスト内の既存のすべてのバックグラウンドページ。
使用法
BrowserContext.BackgroundPages
戻り値
Browser
v1.9より前に追加コンテキストを所有するブラウザインスタンスを取得します。コンテキストが通常のブラウザの外部で作成された場合 (例: Android または Electron) は null を返します。
使用法
BrowserContext.Browser
戻り値
ClearCookiesAsync
v1.9より前に追加コンテキストからクッキーを削除します。オプションのフィルターを受け入れます。
使用法
await context.ClearCookiesAsync();
await context.ClearCookiesAsync(new() { Name = "session-id" });
await context.ClearCookiesAsync(new() { Domain = "my-origin.com" });
await context.ClearCookiesAsync(new() { Path = "/api/v1" });
await context.ClearCookiesAsync(new() { Name = "session-id", Domain = "my-origin.com" });
引数
optionsBrowserContextClearCookiesOptions?(任意)
戻り値
ClearPermissionsAsync
v1.9より前に追加ブラウザコンテキストのすべてのパーミッションオーバーライドをクリアします。
使用法
var context = await browser.NewContextAsync();
await context.GrantPermissionsAsync(new[] { "clipboard-read" });
// Alternatively, you can use the helper class ContextPermissions
// to specify the permissions...
// do stuff ...
await context.ClearPermissionsAsync();
戻り値
CloseAsync
v1.9より前に追加ブラウザコンテキストを閉じます。ブラウザコンテキストに属するすべてのページが閉じられます。
デフォルトのブラウザコンテキストは閉じることができません。
使用法
await BrowserContext.CloseAsync(options);
引数
optionsBrowserContextCloseOptions?(任意)
戻り値
CookiesAsync
v1.9より前に追加URL が指定されていない場合、このメソッドはすべてのクッキーを返します。URL が指定されている場合、それらの URL に影響するクッキーのみが返されます。
使用法
await BrowserContext.CookiesAsync(urls);
引数
-
urlsstring? | IEnumerable?<string> (任意)#オプションの URL のリスト。
戻り値
- IReadOnlyList<
BrowserContextCookiesResult>#
ExposeBindingAsync
v1.9より前に追加このメソッドは、コンテキスト内のすべてのページのすべてのフレームの window オブジェクトに、name という名前の関数を追加します。呼び出されると、この関数は callback を実行し、callback の戻り値に解決される Promise を返します。callback が Promise を返した場合、それは待機されます。
callback 関数の最初の引数には、呼び出し元に関する情報が含まれます: { browserContext: BrowserContext, page: Page, frame: Frame }。
ページのみのバージョンについては Page.ExposeBindingAsync() を参照してください。
使用法
コンテキスト内のすべてのページのすべてのフレームにページ URL を公開する例
using Microsoft.Playwright;
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync(new() { Headless = false });
var context = await browser.NewContextAsync();
await context.ExposeBindingAsync("pageURL", source => source.Page.Url);
var page = await context.NewPageAsync();
await page.SetContentAsync("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.pageURL();\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +
"<div></div>");
await page.GetByRole(AriaRole.Button).ClickAsync();
引数
-
ウィンドウオブジェクト上の関数の名前。
-
callbackAction<BindingSource, T, [TResult]>#Playwright のコンテキストで呼び出されるコールバック関数。
-
optionsBrowserContextExposeBindingOptions?(任意)
戻り値
ExposeFunctionAsync
v1.9より前に追加このメソッドは、コンテキスト内のすべてのページのすべてのフレームの window オブジェクトに、name という名前の関数を追加します。呼び出されると、この関数は callback を実行し、callback の戻り値に解決される Promise を返します。
callback が Promise を返した場合、それは待機されます。
ページのみのバージョンについては Page.ExposeFunctionAsync() を参照してください。
使用法
コンテキスト内のすべてのページに sha256 関数を追加する例
using Microsoft.Playwright;
using System;
using System.Security.Cryptography;
using System.Threading.Tasks;
class BrowserContextExamples
{
public static async Task Main()
{
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Webkit.LaunchAsync(new() { Headless = false });
var context = await browser.NewContextAsync();
await context.ExposeFunctionAsync("sha256", (string input) =>
{
return Convert.ToBase64String(
SHA256.Create().ComputeHash(System.Text.Encoding.UTF8.GetBytes(input)));
});
var page = await context.NewPageAsync();
await page.SetContentAsync("<script>\n" +
" async function onClick() {\n" +
" document.querySelector('div').textContent = await window.sha256('PLAYWRIGHT');\n" +
" }\n" +
"</script>\n" +
"<button onclick=\"onClick()\">Click me</button>\n" +
"<div></div>");
await page.GetByRole(AriaRole.Button).ClickAsync();
Console.WriteLine(await page.TextContentAsync("div"));
}
}
引数
戻り値
GrantPermissionsAsync
v1.9より前に追加ブラウザコンテキストに指定されたパーミッションを付与します。指定された場合、対応するパーミッションを指定されたオリジンにのみ付与します。
使用法
await BrowserContext.GrantPermissionsAsync(permissions, options);
引数
-
permissionsIEnumerable<string>#付与するパーミッションのリスト。
危険サポートされているパーミッションはブラウザによって異なり、同じブラウザの異なるバージョン間でも異なります。アップデート後に任意のパーミッションが動作しなくなる可能性があります。
いくつかのブラウザでサポートされている可能性のあるパーミッションは次のとおりです。
'accelerometer''ambient-light-sensor''background-sync''camera''clipboard-read''clipboard-write''geolocation''gyroscope''magnetometer''microphone''midi-sysex'(システムエクスクルーシブ MIDI)'midi''notifications''payment-handler''storage-access''local-fonts'
-
optionsBrowserContextGrantPermissionsOptions?(任意)-
パーミッションを付与する オリジン (例: "https://example.com")。
-
戻り値
NewCDPSessionAsync
追加されたバージョン: v1.11CDP セッションは Chromium ベースのブラウザでのみサポートされています。
新しく作成されたセッションを返します。
使用法
await BrowserContext.NewCDPSessionAsync(page);
引数
-
新しいセッションを作成するターゲット。後方互換性のため、このパラメータは
pageと名付けられていますが、PageまたはFrame型にすることができます。
戻り値
NewPageAsync
v1.9より前に追加ブラウザコンテキストに新しいページを作成します。
使用法
await BrowserContext.NewPageAsync();
戻り値
Pages
v1.9より前に追加コンテキスト内のすべての開いているページを返します。
使用法
BrowserContext.Pages
戻り値
RouteAsync
v1.9より前に追加ルーティングは、ブラウザコンテキスト内の任意のページによって行われるネットワークリクエストを変更する機能を提供します。一度ルートが有効になると、URL パターンに一致するすべてのリクエストは、続行、達成、または中止されない限り停止します。
BrowserContext.RouteAsync() は、Service Worker によって傍受されたリクエストを傍受しません。この問題については こちら を参照してください。リクエスト傍受を使用する場合は、ServiceWorkers を 'block' に設定して Service Worker を無効にすることをお勧めします。
使用法
すべての画像リクエストを中止する素朴なハンドラの例
var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
await context.RouteAsync("**/*.{png,jpg,jpeg}", r => r.AbortAsync());
await page.GotoAsync("https://theverge.com");
await browser.CloseAsync();
または、代わりに正規表現パターンを使用する同じスニペット
var context = await browser.NewContextAsync();
var page = await context.NewPageAsync();
await context.RouteAsync(new Regex("(\\.png$)|(\\.jpg$)"), r => r.AbortAsync());
await page.GotoAsync("https://theverge.com");
await browser.CloseAsync();
リクエストを調べてルートアクションを決定することができます。たとえば、一部の POST データを含むすべてのリクエストをモックし、その他のすべてのリクエストをそのままにするなどです。
await page.RouteAsync("/api/**", async r =>
{
if (r.Request.PostData.Contains("my-string"))
await r.FulfillAsync(new() { Body = "mocked-data" });
else
await r.ContinueAsync();
});
リクエストが両方のハンドラに一致する場合、ページルート (Page.RouteAsync() で設定) はブラウザコンテキストルートよりも優先されます。
ハンドラ付きのルートを削除するには、BrowserContext.UnrouteAsync() を使用できます。
ルーティングを有効にすると、HTTP キャッシュが無効になります。
引数
-
urlstring | Regex | Func<string, bool>#ルーティング中に一致させる URL を受け取るグロブパターン、正規表現パターン、または述語。コンテキストオプションで BaseURL が設定されており、指定された URL が
*で始まらない文字列の場合、new URL()コンストラクタを使用して解決されます。 -
リクエストをルーティングするハンドラ関数。
-
optionsBrowserContextRouteOptions?(任意)
戻り値
RouteFromHARAsync
追加日: v1.23指定されている場合、コンテキストで行われるネットワークリクエストは HAR ファイルから提供されます。HAR からのリプレイについて詳しく読む。
Playwright は、Service Worker によって傍受されたリクエストを HAR ファイルから提供しません。この問題については こちら を参照してください。リクエスト傍受を使用する場合は、ServiceWorkers を 'block' に設定して Service Worker を無効にすることをお勧めします。
使用法
await BrowserContext.RouteFromHARAsync(har, options);
引数
-
事前に記録されたネットワークデータを含む HAR ファイルへのパス。
pathが相対パスの場合、現在の作業ディレクトリに対して解決されます。 -
optionsBrowserContextRouteFromHAROptions?(任意)-
NotFoundenum HarNotFound { Abort, Fallback }?(任意)#- 'abort' に設定されている場合、HAR ファイルに見つからないリクエストは中止されます。
- 'fallback' に設定されている場合、ハンドラチェーン内の次のルートハンドラにフォールスルーします。
デフォルトは abort です。
-
指定されている場合、ファイルから提供する代わりに、実際のネットワーク情報で指定された HAR を更新します。ファイルは BrowserContext.CloseAsync() が呼び出されたときにディスクに書き込まれます。
-
UpdateContentenum RouteFromHarUpdateContentPolicy { Embed, Attach }?(任意)追加日: v1.32#リソースコンテンツ管理を制御するためのオプション設定。
attachが指定されている場合、リソースは個別のファイルまたは ZIP アーカイブ内のエントリとして永続化されます。embedが指定されている場合、コンテンツは HAR ファイル内にインラインで格納されます。 -
UpdateModeenum HarMode { Full, Minimal }?(任意)追加日: v1.32#minimalに設定すると、HAR からルーティングするために必要な情報のみが記録されます。これにより、HAR からリプレイするときに使用されないサイズ、タイミング、ページ、クッキー、セキュリティ、およびその他の種類の HAR 情報が省略されます。デフォルトはminimalです。 -
Url|UrlRegexstring? | Regex? (任意)#リクエスト URL に一致するグロブパターン、正規表現、または述語。パターンに一致する URL を持つリクエストのみが HAR ファイルから提供されます。指定されていない場合、すべてのリクエストが HAR ファイルから提供されます。
-
戻り値
RouteWebSocketAsync
追加日: v1.48このメソッドは、ブラウザコンテキスト内の任意のページによって行われる websocket 接続を変更できます。
このメソッドが呼び出された後に作成された WebSocket のみがルーティングされることに注意してください。このメソッドをページを作成する前に呼び出すことをお勧めします。
使用法
以下は、一部の websocket メッセージをブロックする単純なハンドラの例です。詳細と例については WebSocketRoute を参照してください。
await context.RouteWebSocketAsync("/ws", async ws => {
ws.RouteSend(message => {
if (message == "to-be-blocked")
return;
ws.Send(message);
});
await ws.ConnectAsync();
});
引数
-
urlstring | Regex | Func<string, bool>#このパターンに一致する URL を持つ WebSocket のみがルーティングされます。文字列パターンは、BaseURL コンテキストオプションに対して相対的になります。
-
handlerAction<WebSocketRoute>#WebSocket をルーティングするハンドラ関数。
戻り値
RunAndWaitForConsoleMessageAsync
追加バージョン: v1.34アクションを実行し、コンテキスト内のページで ConsoleMessage がログに記録されるのを待ちます。述語が提供されている場合、ConsoleMessage の値を predicate 関数に渡し、predicate(message) が真の値を返すのを待ちます。BrowserContext.Console イベントが発生する前にページが閉じられた場合、エラーがスローされます。
使用法
await BrowserContext.RunAndWaitForConsoleMessageAsync(action, options);
引数
-
イベントをトリガーするアクション。
-
optionsBrowserContextRunAndWaitForConsoleMessageOptions?(任意)-
PredicateFunc<ConsoleMessage?, bool> (任意)#ConsoleMessage オブジェクトを受け取り、待機が解決されるときに真の値を返します。
-
Timeout[float]? (任意)#待機する最大時間 (ミリ秒)。デフォルトは
30000(30 秒) です。タイムアウトを無効にするには0を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() を使用して変更できます。
-
戻り値
WaitForConsoleMessageAsync
追加バージョン: v1.34アクションを実行し、コンテキスト内のページで ConsoleMessage がログに記録されるのを待ちます。述語が提供されている場合、ConsoleMessage の値を predicate 関数に渡し、predicate(message) が真の値を返すのを待ちます。BrowserContext.Console イベントが発生する前にページが閉じられた場合、エラーがスローされます。
使用法
await BrowserContext.WaitForConsoleMessageAsync(action, options);
引数
optionsBrowserContextRunAndWaitForConsoleMessageOptions?(任意)-
PredicateFunc<ConsoleMessage?, bool> (任意)#ConsoleMessage オブジェクトを受け取り、待機が解決されるときに真の値を返します。
-
Timeout[float]? (任意)#待機する最大時間 (ミリ秒)。デフォルトは
30000(30 秒) です。タイムアウトを無効にするには0を渡します。デフォルト値は BrowserContext.SetDefaultTimeout() を使用して変更できます。
-
戻り値
RunAndWaitForPageAsync
追加バージョン: v1.9アクションを実行し、コンテキストに新しい Page が作成されるのを待ちます。述語が提供されている場合、Page の値を predicate 関数に渡し、predicate(event) が真の値を返すのを待ちます。新しい Page が作成される前にコンテキストが閉じられた場合、エラーがスローされます。
使用法
await BrowserContext.RunAndWaitForPageAsync(action, options);
引数
-
イベントをトリガーするアクション。
-
optionsBrowserContextRunAndWaitForPageOptions?(任意)
戻り値
WaitForPageAsync
追加バージョン: v1.9アクションを実行し、コンテキストに新しい Page が作成されるのを待ちます。述語が提供されている場合、Page の値を predicate 関数に渡し、predicate(event) が真の値を返すのを待ちます。新しい Page が作成される前にコンテキストが閉じられた場合、エラーがスローされます。
使用法
await BrowserContext.WaitForPageAsync(action, options);
引数
optionsBrowserContextRunAndWaitForPageOptions?(任意)
戻り値
SetDefaultNavigationTimeout
v1.9より前に追加この設定は、以下のメソッドと関連するショートカットのデフォルトの最大ナビゲーション時間を変更します。
- Page.GoBackAsync()
- Page.GoForwardAsync()
- Page.GotoAsync()
- Page.ReloadAsync()
- Page.SetContentAsync()
- Page.RunAndWaitForNavigationAsync()
使用法
BrowserContext.SetDefaultNavigationTimeout(timeout);
引数
-
timeout[float]#最大ナビゲーション時間 (ミリ秒)
SetDefaultTimeout
v1.9より前に追加この設定は、timeout オプションを受け入れるすべてのメソッドのデフォルトの最大時間を変更します。
使用法
BrowserContext.SetDefaultTimeout(timeout);
引数
-
timeout[float]#最大時間 (ミリ秒)。タイムアウトを無効にするには
0を渡します。
SetExtraHTTPHeadersAsync
v1.9より前に追加追加の HTTP ヘッダーは、コンテキスト内の任意のページによって開始されたすべてのリクエストとともに送信されます。これらのヘッダーは、Page.SetExtraHTTPHeadersAsync() で設定されたページ固有の追加 HTTP ヘッダーとマージされます。ページが特定のヘッダーをオーバーライドする場合、ブラウザコンテキストのヘッダー値の代わりにページ固有のヘッダー値が使用されます。
BrowserContext.SetExtraHTTPHeadersAsync() は、送信リクエストにおけるヘッダーの順序を保証しません。
使用法
await BrowserContext.SetExtraHTTPHeadersAsync(headers);
引数
-
headersIDictionary<string, string>#すべてのリクエストとともに送信される追加の HTTP ヘッダーを含むオブジェクト。すべてのヘッダー値は文字列である必要があります。
戻り値
SetGeolocationAsync
v1.9より前に追加コンテキストの地理位置情報を設定します。null または undefined を渡すと、位置情報が利用できない状態をエミュレートします。
使用法
await context.SetGeolocationAsync(new Geolocation()
{
Latitude = 59.95f,
Longitude = 30.31667f
});
ブラウザコンテキストページに地理位置情報を読み取るパーミッションを付与するには、BrowserContext.GrantPermissionsAsync() を使用することを検討してください。
引数
geolocationGeolocation?#-
Latitude[float]-90から90の間の緯度。
-
Longitude[float]-180から180の間の経度。
-
Accuracy[float]? (任意)非負の精度値。デフォルトは
0です。
-
戻り値
SetOfflineAsync
v1.9より前に追加使用法
await BrowserContext.SetOfflineAsync(offline);
引数
戻り値
StorageStateAsync
v1.9より前に追加このブラウザコンテキストのストレージ状態を返します。現在のクッキー、ローカルストレージのスナップショット、IndexedDB のスナップショットが含まれます。
使用法
await BrowserContext.StorageStateAsync(options);
引数
optionsBrowserContextStorageStateOptions?(任意)
戻り値
UnrouteAsync
v1.9より前に追加BrowserContext.RouteAsync() で作成されたルートを削除します。handler が指定されていない場合、url のすべてのルートを削除します。
使用法
await BrowserContext.UnrouteAsync(url, handler);
引数
-
urlstring | Regex | Func<string, bool>#BrowserContext.RouteAsync() でルーティングを登録するために使用される URL を受け取るグロブパターン、正規表現パターン、または述語。
-
BrowserContext.RouteAsync() でルーティングを登録するために使用されるオプションのハンドラ関数。
戻り値
UnrouteAllAsync
追加日: v1.41BrowserContext.RouteAsync() および BrowserContext.RouteFromHARAsync() で作成されたすべてのルートを削除します。
使用法
await BrowserContext.UnrouteAllAsync(options);
引数
optionsBrowserContextUnrouteAllOptions?(任意)-
Behaviorenum UnrouteBehavior { Wait, IgnoreErrors, Default }?(任意)#既に実行中のハンドラを待機するかどうか、およびエラーがスローされた場合の対処方法を指定します。
'default'- 現在のハンドラ呼び出し (もしあれば) の完了を待たず、アンルートされたハンドラがエラーをスローした場合、未処理のエラーが発生する可能性があります。'wait'- 現在のハンドラ呼び出し (もしあれば) の完了を待ちます。'ignoreErrors'- 現在のハンドラ呼び出し (もしあれば) の完了を待たず、アンルーティング後にハンドラによってスローされたすべてのエラーは静かにキャッチされます。
-
戻り値
プロパティ
APIRequest
追加バージョン: v1.16このコンテキストに関連付けられた API テストヘルパー。この API で行われたリクエストは、コンテキストクッキーを使用します。
使用法
BrowserContext.APIRequest
タイプ
Clock
追加されたバージョン: v1.45Playwright には、クロックと時間の経過をモックする機能があります。
使用法
BrowserContext.Clock
タイプ
Tracing
追加日: v1.12使用法
BrowserContext.Tracing
タイプ
イベント
イベント BackgroundPage
追加されたバージョン: v1.11Chromium ブラウザの永続コンテキストでのみ機能します。
コンテキストで新しいバックグラウンドページが作成されたときに発生します。
context.BackgroundPage += (_, backgroundPage) =>
{
Console.WriteLine(backgroundPage.Url);
};
使用法
BrowserContext.BackgroundPage += async (_, page) => {};
イベントデータ
イベント Close
v1.9より前に追加ブラウザコンテキストが閉じられたときに発生します。これは以下のいずれかの理由で発生する可能性があります。
- ブラウザコンテキストが閉じられた。
- ブラウザアプリケーションが閉じられたかクラッシュした。
- Browser.CloseAsync() メソッドが呼び出された。
使用法
BrowserContext.Close += async (_, browserContext) => {};
イベントデータ
イベント Console
追加バージョン: v1.34ページ内の JavaScript が console.log や console.dir などのコンソール API メソッドのいずれかを呼び出したときに発生します。
console.log およびページに渡された引数は、ConsoleMessage イベントハンドラ引数で利用できます。
使用法
context.Console += async (_, msg) =>
{
foreach (var arg in msg.Args)
Console.WriteLine(await arg.JsonValueAsync<object>());
};
await page.EvaluateAsync("console.log('hello', 5, { foo: 'bar' })");
イベントデータ
イベント Dialog
追加バージョン: v1.34alert、prompt、confirm、beforeunload などの JavaScript ダイアログが表示されたときに発生します。リスナーはダイアログを Dialog.AcceptAsync() するか Dialog.DismissAsync() するか 必ず 行う必要があります。そうしないと、ページはダイアログを待機して フリーズ し、クリックなどのアクションは決して終了しません。
使用法
Context.Dialog += async (_, dialog) =>
{
await dialog.AcceptAsync();
};
Page.Dialog または BrowserContext.Dialog リスナーが存在しない場合、すべてのダイアログは自動的に閉じられます。
イベントデータ
イベント Page
v1.9より前に追加BrowserContext で新しい Page が作成されたときにイベントが発行されます。ページはまだ読み込み中である可能性があります。このイベントはポップアップページに対しても発生します。特定のページに関連するポップアップに関するイベントを受け取るには、Page.Popup も参照してください。
ページが利用可能になる最も早い時点は、初期 URL にナビゲートしたときです。たとえば、window.open('http://example.com') でポップアップを開く場合、このイベントは "http://example.com" へのネットワークリクエストが完了し、その応答がポップアップで読み込みを開始したときに発生します。このネットワークリクエストをルーティング/リッスンしたい場合は、Page の同様のメソッドではなく、BrowserContext.RouteAsync() および BrowserContext.Request を使用してください。
var popup = await context.RunAndWaitForPageAsync(async =>
{
await page.GetByText("open new page").ClickAsync();
});
Console.WriteLine(await popup.EvaluateAsync<string>("location.href"));
ページが特定の状態になるまで待機するには、Page.WaitForLoadStateAsync() を使用します (ほとんどの場合、必要ありません)。
使用法
BrowserContext.Page += async (_, page) => {};
イベントデータ
イベント Request
追加日: v1.12このコンテキストを通じて作成された任意のページからリクエストが発行されたときに発生します。リクエスト オブジェクトは読み取り専用です。特定のページからのリクエストのみをリッスンするには、Page.Request を使用します。
リクエストを傍受して変更するには、BrowserContext.RouteAsync() または Page.RouteAsync() を参照してください。
使用法
BrowserContext.Request += async (_, request) => {};
イベントデータ
イベント RequestFailed
追加日: v1.12タイムアウトなどによりリクエストが失敗したときに発生します。特定のページからの失敗したリクエストのみをリッスンするには、Page.RequestFailed を使用します。
404 や 503 などの HTTP エラー応答は、HTTP の観点からは依然として成功した応答であるため、リクエストは BrowserContext.RequestFinished イベントで完了し、BrowserContext.RequestFailed では完了しません。
使用法
BrowserContext.RequestFailed += async (_, request) => {};
イベントデータ
イベント RequestFinished
追加日: v1.12応答ボディのダウンロード後にリクエストが正常に完了したときに発生します。成功した応答の場合、イベントのシーケンスは request、response、requestfinished です。特定のページからの成功したリクエストをリッスンするには、Page.RequestFinished を使用します。
使用法
BrowserContext.RequestFinished += async (_, request) => {};
イベントデータ
イベント Response
追加日: v1.12応答 ステータスとヘッダーがリクエストに対して受信されたときに発生します。成功した応答の場合、イベントのシーケンスは request、response、requestfinished です。特定のページからの応答イベントをリッスンするには、Page.Response を使用します。
使用法
BrowserContext.Response += async (_, response) => {};
イベントデータ
イベント WebError
追加バージョン: v1.38このコンテキスト内のいずれかのページで未処理の例外が発生したときに発生します。特定のページからのエラーをリッスンするには、代わりに Page.PageError を使用します。
使用法
BrowserContext.WebError += async (_, webError) => {};
イベントデータ