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 });
引数
cookies
IEnumerable<Cookie
>#-
Name
string -
Value
string -
Url
string? (オプション)urlまたはdomain / pathのいずれかが必須です。オプション。
-
Domain
string? (オプション)クッキーをすべてのサブドメインにも適用するには、ドメインの先頭にドットを付けます(例:".example.com")。urlまたはdomain / pathのいずれかが必須です。オプション。
-
Path
string? (オプション)urlまたはdomain / pathのいずれかが必須です。オプション。
-
Expires
[float]? (オプション)Unix時間(秒単位)。オプション。
-
HttpOnly
bool? (オプション)オプション。
-
Secure
bool? (オプション)オプション。
-
SameSite
enum SameSiteAttribute { Strict, Lax, None }?
(オプション)オプション。
-
戻り値
AddInitScriptAsync
v1.9より前に追加次のいずれかのシナリオで評価されるスクリプトを追加します。
- ブラウザコンテキストでページが作成またはナビゲートされるとき。
- 子フレームがブラウザコンテキスト内の任意のページでアタッチまたはナビゲートされるとき。この場合、スクリプトは新しくアタッチされたフレームのコンテキストで評価されます。
スクリプトは、ドキュメントが作成された後、そのスクリプトが実行される前に評価されます。これは、例えばMath.random
をシードするなど、JavaScript環境を修正するのに役立ちます。
使用例
ページがロードされる前に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より前に追加コンテキストのブラウザインスタンスを返します。永続コンテキストとして起動された場合は、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" });
引数
options
BrowserContextClearCookiesOptions?
(オプション)
戻り値
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);
引数
options
BrowserContextCloseOptions?
(オプション)
戻り値
CookiesAsync
v1.9より前に追加URLが指定されていない場合、このメソッドはすべてのクッキーを返します。URLが指定されている場合、それらのURLに影響を与えるクッキーのみが返されます。
使用例
await BrowserContext.CookiesAsync(urls);
引数
-
urls
string? | IEnumerable?<string> (オプション)#オプションのURLリスト。
戻り値
- IEnumerable<
Cookie
>#
ExposeBindingAsync
v1.9より前に追加このメソッドは、コンテキスト内のすべてのページのすべてのフレームのwindow
オブジェクトにnameという名前の関数を追加します。呼び出されると、関数はcallbackを実行し、callbackの戻り値に解決されるPromiseを返します。callbackがPromiseを返す場合、それはawaitされます。
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();
引数
-
windowオブジェクト上の関数の名前。
-
callback
Action<BindingSource, T, [TResult]>#Playwrightのコンテキストで呼び出されるコールバック関数。
-
options
BrowserContextExposeBindingOptions?
(オプション)
戻り値
ExposeFunctionAsync
v1.9より前に追加このメソッドは、コンテキスト内のすべてのページのすべてのフレームのwindow
オブジェクトにnameという名前の関数を追加します。呼び出されると、関数はcallbackを実行し、callbackの戻り値に解決されるPromiseを返します。
callbackがPromiseを返す場合、それはawaitされます。
ページ専用バージョンについては、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);
引数
-
permissions
IEnumerable<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'
-
options
BrowserContextGrantPermissionsOptions?
(オプション)-
許可を与えるオリジン(例:"https://example.com")。
-
戻り値
NewCDPSessionAsync
追加: v1.11CDPセッションは、Chromiumベースのブラウザでのみサポートされています。
新しく作成されたセッションを返します。
使用例
await BrowserContext.NewCDPSessionAsync(page);
引数
戻り値
NewPageAsync
v1.9より前に追加ブラウザコンテキストに新しいページを作成します。
使用例
await BrowserContext.NewPageAsync();
戻り値
Pages
v1.9より前に追加コンテキスト内のすべての開いているページを返します。
使用例
BrowserContext.Pages
戻り値
RouteAsync
v1.9より前に追加ルーティングは、ブラウザコンテキスト内の任意のページによって行われたネットワークリクエストを変更する機能を提供します。ルートが有効になると、URLパターンに一致するすべてのリクエストは、続行、フルフィル、または中止されない限り、停止します。
BrowserContext.RouteAsync()は、Service Workerによってインターセプトされたリクエストをインターセプトしません。この issueを参照してください。リクエストインターセプトを使用する場合は、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();
リクエストを調べてルートアクションを決定することが可能です。たとえば、一部のポストデータを含むすべてのリクエストをモックし、他のすべてのリクエストをそのままにするなど。
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キャッシュが無効になります。
引数
-
url
string | Regex | Func<string, bool>#ルーティング中に一致させるURLを受け取るグロブパターン、正規表現パターン、または述語。コンテキストオプションを介してBaseURLが提供され、渡されたURLがパスである場合、
new URL()
コンストラクタを介してマージされます。 -
リクエストをルーティングするハンドラー関数。
-
options
BrowserContextRouteOptions?
(オプション)
戻り値
RouteFromHARAsync
追加: v1.23指定された場合、コンテキストで行われたネットワークリクエストはHARファイルから提供されます。HARからのリプレイの詳細をお読みください。
Playwrightは、Service WorkerによってインターセプトされたリクエストをHARファイルから提供しません。この issueを参照してください。リクエストインターセプトを使用する場合は、ServiceWorkersを'block'
に設定してService Workerを無効にすることをお勧めします。
使用例
await BrowserContext.RouteFromHARAsync(har, options);
引数
-
プリレコードされたネットワークデータを含むHARファイルへのパス。
path
が相対パスの場合、現在の作業ディレクトリを基準に解決されます。 -
options
BrowserContextRouteFromHAROptions?
(オプション)-
NotFound
enum HarNotFound { Abort, Fallback }?
(オプション)#- 'abort'に設定すると、HARファイルに見つからないリクエストはすべて中止されます。
- 'fallback'に設定すると、ハンドラーチェーン内の次のルートハンドラーにフォールバックします。
デフォルトはabortです。
-
指定された場合、ファイルから提供する代わりに、実際のネットワーク情報で指定されたHARを更新します。ファイルは、BrowserContext.CloseAsync()が呼び出されたときにディスクに書き込まれます。
-
UpdateContent
enum RouteFromHarUpdateContentPolicy { Embed, Attach }?
(オプション)追加: v1.32#リソースコンテンツ管理を制御するためのオプション設定。
attach
が指定されている場合、リソースは個別のファイルとして、またはZIPアーカイブのエントリとして永続化されます。embed
が指定されている場合、コンテンツはHARファイルにインラインで保存されます。 -
UpdateMode
enum HarMode { Full, Minimal }?
(オプション)追加: v1.32#minimal
に設定すると、HARからのルーティングに必要な情報のみを記録します。これにより、HARからのリプレイ時に使用されないサイズ、タイミング、ページ、クッキー、セキュリティ、およびその他のタイプのHAR情報が省略されます。デフォルトはminimal
です。 -
Url|UrlRegex
string? | 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();
});
引数
-
url
string | Regex | Func<string, bool>#このパターンに一致するURLを持つWebSocketのみがルーティングされます。文字列パターンは、BaseURLコンテキストオプションに対する相対パスにすることができます。
-
handler
Action<WebSocketRoute>#WebSocketをルーティングするハンドラー関数。
戻り値
RunAndWaitForConsoleMessageAsync
追加: v1.34アクションを実行し、コンテキスト内のページでログに記録されるConsoleMessageを待ちます。述語が指定されている場合、ConsoleMessage値をpredicate
関数に渡し、predicate(message)
が真の値を返すのを待ちます。BrowserContext.Consoleイベントが発生する前にページが閉じられた場合、エラーがスローされます。
使用例
await BrowserContext.RunAndWaitForConsoleMessageAsync(action, options);
引数
-
イベントをトリガーするアクション。
-
options
BrowserContextRunAndWaitForConsoleMessageOptions?
(オプション)-
Predicate
Func<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);
引数
options
BrowserContextRunAndWaitForConsoleMessageOptions?
(オプション)-
Predicate
Func<ConsoleMessage?, bool> (オプション)#ConsoleMessageオブジェクトを受け取り、待機が解決されるときに真の値を解決します。
-
Timeout
[float]? (オプション)#最大待機時間(ミリ秒)。デフォルトは
30000
(30秒)です。タイムアウトを無効にするには0
を渡します。デフォルト値は、BrowserContext.SetDefaultTimeout()を使用して変更できます。
-
戻り値
RunAndWaitForPageAsync
追加: v1.9アクションを実行し、コンテキスト内で新しいPageが作成されるのを待ちます。predicateが指定されている場合、Page値をpredicate
関数に渡し、predicate(event)
が真値を返すのを待ちます。新しいPageが作成される前にコンテキストが閉じると、エラーがスローされます。
使用例
await BrowserContext.RunAndWaitForPageAsync(action, options);
引数
-
イベントをトリガーするアクション。
-
options
BrowserContextRunAndWaitForPageOptions?
(オプション)
戻り値
WaitForPageAsync
追加: v1.9アクションを実行し、コンテキスト内で新しいPageが作成されるのを待ちます。predicateが指定されている場合、Page値をpredicate
関数に渡し、predicate(event)
が真値を返すのを待ちます。新しいPageが作成される前にコンテキストが閉じると、エラーがスローされます。
使用例
await BrowserContext.WaitForPageAsync(action, options);
引数
options
BrowserContextRunAndWaitForPageOptions?
(オプション)
戻り値
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);
引数
-
headers
IDictionary<string, string>#すべてのリクエストとともに送信される追加のHTTPヘッダーを含むオブジェクト。すべてのヘッダー値は文字列である必要があります。
戻り値
SetGeolocationAsync
v1.9より前に追加コンテキストの地理位置情報を設定します。null
またはundefined
を渡すと、位置情報が利用できない状態をエミュレートします。
使用例
await context.SetGeolocationAsync(new Geolocation()
{
Latitude = 59.95f,
Longitude = 30.31667f
});
BrowserContext.GrantPermissionsAsync()を使用して、ブラウザコンテキストページがその地理位置情報を読み取るための権限を付与することを検討してください。
引数
geolocation
Geolocation?#-
Latitude
[float]緯度(-90〜90)。
-
Longitude
[float]経度(-180〜180)。
-
Accuracy
[float]? (オプション)非負の精度値。デフォルトは
0
です。
-
戻り値
SetOfflineAsync
v1.9より前に追加使用例
await BrowserContext.SetOfflineAsync(offline);
引数
戻り値
StorageStateAsync
v1.9より前に追加このブラウザコンテキストのストレージ状態を返します。現在のCookie、ローカルストレージのスナップショット、およびIndexedDBのスナップショットが含まれています。
使用例
await BrowserContext.StorageStateAsync(options);
引数
options
BrowserContextStorageStateOptions?
(オプション)-
IndexedDB
bool? (オプション)追加: v1.51#ストレージ状態のスナップショットにIndexedDBを含める場合は、
true
に設定します。アプリケーションがFirebase Authenticationなどの認証トークンを保存するためにIndexedDBを使用している場合は、これを有効にしてください。注意型付き配列を持つIndexedDBは現在サポートされていません。
-
ストレージ状態を保存するファイルパス。Pathが相対パスの場合、現在の作業ディレクトリからの相対パスとして解決されます。パスが指定されていない場合でも、ストレージ状態は返されますが、ディスクには保存されません。
-
戻り値
UnrouteAsync
v1.9より前に追加BrowserContext.RouteAsync()で作成されたルートを削除します。handlerが指定されていない場合、urlのすべてのルートを削除します。
使用例
await BrowserContext.UnrouteAsync(url, handler);
引数
-
url
string | Regex | Func<string, bool>#BrowserContext.RouteAsync()でルーティングを登録するために使用される、globパターン、正規表現パターン、またはURLを受け取る述語。
-
handler
Action<Route?> (オプション)#BrowserContext.RouteAsync()でルーティングを登録するために使用されるオプションのハンドラー関数。
戻り値
UnrouteAllAsync
追加: v1.41BrowserContext.RouteAsync()およびBrowserContext.RouteFromHARAsync()で作成されたすべてのルートを削除します。
使用例
await BrowserContext.UnrouteAllAsync(options);
引数
options
BrowserContextUnrouteAllOptions?
(オプション)-
Behavior
enum UnrouteBehavior { Wait, IgnoreErrors, Default }?
(オプション)#実行中のハンドラーを待機するかどうか、およびエラーがスローされた場合の対処法を指定します。
'default'
- 現在のハンドラー呼び出し(存在する場合)が終了するのを待機しません。アンルートされたハンドラーが例外をスローした場合、未処理のエラーが発生する可能性があります。'wait'
- 現在のハンドラー呼び出し(存在する場合)が終了するのを待機します。'ignoreErrors'
- 現在のハンドラー呼び出し(存在する場合)が終了するのを待機しません。アンルーティング後にハンドラーによってスローされたすべてのエラーは、通知なくキャッチされます。
-
戻り値
プロパティ
APIRequest
追加: v1.16このコンテキストに関連付けられたAPIテストヘルパー。このAPIで行われたリクエストは、コンテキストCookieを使用します。
使用例
BrowserContext.APIRequest
型
Clock
追加: v1.45Playwrightには、クロックと時間の経過をモックする機能があります。
使用例
BrowserContext.Clock
型
Tracing
追加: v1.12使用例
BrowserContext.Tracing
型
イベント
event BackgroundPage
追加: v1.11Chromiumブラウザの永続コンテキストでのみ機能します。
新しいバックグラウンドページがコンテキストで作成されたときに発生します。
context.BackgroundPage += (_, backgroundPage) =>
{
Console.WriteLine(backgroundPage.Url);
};
使用例
BrowserContext.BackgroundPage += async (_, page) => {};
イベントデータ
event Close
v1.9より前に追加Browserコンテキストが閉じられたときに発生します。これは、次のいずれかの理由で発生する可能性があります。
- ブラウザコンテキストが閉じられました。
- ブラウザアプリケーションが閉じられたか、クラッシュしました。
- Browser.CloseAsync()メソッドが呼び出されました。
使用例
BrowserContext.Close += async (_, browserContext) => {};
イベントデータ
event Console
追加: v1.34ページ内のJavaScriptがconsole.log
やconsole.dir
などのconsole 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' })");
イベントデータ
event Dialog
追加: v1.34alert
、prompt
、confirm
、beforeunload
などのJavaScriptダイアログが表示されると発生します。リスナーは、Dialog.AcceptAsync()またはDialog.DismissAsync()のいずれかでダイアログを承認または拒否する必要があります。そうしないと、ページはダイアログを待機してフリーズし、クリックなどのアクションは完了しません。
使用例
Context.Dialog += async (_, dialog) =>
{
await dialog.AcceptAsync();
};
Page.DialogまたはBrowserContext.Dialogリスナーが存在しない場合、すべてのダイアログは自動的に拒否されます。
イベントデータ
event Page
v1.9より前に追加このイベントは、新しいPageがBrowserContextで作成されるときに発生します。ページはまだロード中である可能性があります。このイベントは、ポップアップページでも発生します。特定のページに関連するポップアップに関するイベントを受信するPage.Popupも参照してください。
ページが利用可能になる最も早い瞬間は、最初のURLにナビゲートしたときです。たとえば、window.open('http://example.com')
でポップアップを開くと、"http://example.com"へのネットワークリクエストが完了し、そのレスポンスがポップアップでロードを開始したときに、このイベントが発生します。このネットワークリクエストをルーティング/リッスンする場合は、BrowserContext.RouteAsync()とBrowserContext.RequestをそれぞれPageの同様のメソッドの代わりに使用してください。
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) => {};
イベントデータ
event Request
追加: v1.12このコンテキストを通じて作成された任意のページからリクエストが発行されると発生します。requestオブジェクトは読み取り専用です。特定のページからのリクエストのみをリッスンするには、Page.Requestを使用します。
リクエストをインターセプトして変更するには、BrowserContext.RouteAsync()またはPage.RouteAsync()を参照してください。
使用例
BrowserContext.Request += async (_, request) => {};
イベントデータ
event RequestFailed
追加: v1.12リクエストがタイムアウトなどで失敗した場合に発生します。特定のページからの失敗したリクエストのみをリッスンするには、Page.RequestFailedを使用します。
404や503などのHTTPエラーレスポンスは、HTTPの観点からは依然として成功したレスポンスであるため、リクエストはBrowserContext.RequestFinishedイベントで完了し、BrowserContext.RequestFailedイベントでは完了しません。
使用例
BrowserContext.RequestFailed += async (_, request) => {};
イベントデータ
event RequestFinished
追加: v1.12レスポンスボディのダウンロード後、リクエストが正常に終了すると発生します。成功したレスポンスの場合、イベントのシーケンスはrequest
、response
、requestfinished
です。特定のページからの成功したリクエストをリッスンするには、Page.RequestFinishedを使用します。
使用例
BrowserContext.RequestFinished += async (_, request) => {};
イベントデータ
event Response
追加: v1.12responseステータスとヘッダーがリクエストに対して受信されると発生します。成功したレスポンスの場合、イベントのシーケンスはrequest
、response
、requestfinished
です。特定のページからのレスポンスイベントをリッスンするには、Page.Responseを使用します。
使用例
BrowserContext.Response += async (_, response) => {};
イベントデータ
event WebError
追加: v1.38このコンテキスト内のいずれかのページで例外が未処理の場合に発生します。特定のページからのエラーをリッスンするには、代わりにPage.PageErrorを使用してください。
使用例
BrowserContext.WebError += async (_, webError) => {};
イベントデータ