Request
ページがネットワークリソースのリクエストを送信するたびに、Page によって以下のイベントシーケンスが発行されます
- リクエストがページによって発行されたときに page.on('request') が発行されます。
- リクエストのレスポンスステータスとヘッダーが受信されたときに page.on('response') が発行されます。
- レスポンスボディがダウンロードされ、リクエストが完了したときに page.on('requestfinished') が発行されます。
リクエストが途中で失敗した場合、'requestfinished'
イベント(および場合によっては 'response' イベント)の代わりに page.on('requestfailed') イベントが発行されます。
404や503のようなHTTPエラーレスポンスは、HTTPの観点からは成功したレスポンスであるため、リクエストは 'requestfinished'
イベントで完了します。
リクエストが 'redirect' レスポンスを受け取った場合、リクエストは requestfinished
イベントで正常に終了し、リダイレクトされたURLに新しいリクエストが発行されます。
メソッド
allHeaders
追加バージョン: v1.15このリクエストに関連付けられたすべてのリクエストHTTPヘッダーを含むオブジェクト。ヘッダー名は小文字です。
使用方法
await request.allHeaders();
戻り値
failure
追加バージョン: v1.9より前このリクエストが requestfailed
イベントによって報告されたように失敗していない限り、このメソッドは null
を返します。
使用方法
失敗したすべてのリクエストのログ出力例
page.on('requestfailed', request => {
console.log(request.url() + ' ' + request.failure().errorText);
});
戻り値
frame
追加バージョン: v1.9より前このリクエストを開始したFrameを返します。
使用方法
const frameUrl = request.frame().url();
戻り値
詳細
場合によってはフレームが利用できず、このメソッドが例外をスローすることに注意してください。
- リクエストがService Workerで発生した場合。
request.serviceWorker()
を使用して確認できます。 - 対応するフレームが作成される前にナビゲーションリクエストが発行された場合。request.isNavigationRequest() を使用して確認できます。
すべてのケースを処理する例を次に示します
if (request.serviceWorker())
console.log(`request ${request.url()} from a service worker`);
else if (request.isNavigationRequest())
console.log(`request ${request.url()} is a navigation request`);
else
console.log(`request ${request.url()} from a frame ${request.frame().url()}`);
headerValue
追加バージョン: v1.15名前に一致するヘッダーの値を返します。名前は大文字と小文字を区別しません。
使用方法
await request.headerValue(name);
引数
戻り値
headers
追加バージョン: v1.9より前リクエストHTTPヘッダーを含むオブジェクト。ヘッダー名は小文字です。このメソッドは、cookie関連のものを含むセキュリティ関連のヘッダーを返さないことに注意してください。cookie
情報を含むヘッダーの完全なリストについては、request.allHeaders() を使用できます。
使用方法
request.headers();
戻り値
headersArray
追加バージョン: v1.15このリクエストに関連付けられたすべてのリクエストHTTPヘッダーの配列です。request.allHeaders() とは異なり、ヘッダー名は大文字小文字が変換されません。Set-Cookie
のように複数のエントリを持つヘッダーは、配列に複数回出現します。
使用方法
await request.headersArray();
戻り値
isNavigationRequest
追加バージョン: v1.9より前このリクエストがフレームのナビゲーションを駆動しているかどうか。
一部のナビゲーションリクエストは、対応するフレームが作成される前に発行されるため、request.frame() が利用できません。
使用方法
request.isNavigationRequest();
戻り値
method
追加バージョン: v1.9より前リクエストのメソッド (GET, POSTなど)
使用方法
request.method();
戻り値
postData
追加バージョン: v1.9より前リクエストのPOSTボディ(もしあれば)。
使用方法
request.postData();
戻り値
postDataBuffer
追加バージョン: v1.9より前リクエストのPOSTボディのバイナリ形式(もしあれば)。
使用方法
request.postDataBuffer();
戻り値
postDataJSON
追加バージョン: v1.9より前form-urlencoded
の場合はパースされたリクエストボディを、それ以外の場合はJSONとして返します(もしあれば)。
レスポンスが application/x-www-form-urlencoded
の場合、値のキー/バリューオブジェクトが返されます。それ以外の場合はJSONとしてパースされます。
使用方法
request.postDataJSON();
戻り値
redirectedFrom
追加バージョン: v1.9より前サーバーによってこのリクエストにリダイレクトされたリクエスト(もしあれば)。
サーバーがリダイレクトで応答すると、Playwrightは新しいRequestオブジェクトを作成します。2つのリクエストは redirectedFrom()
および redirectedTo()
メソッドによって接続されます。複数のサーバーリダイレクトが発生した場合、redirectedFrom()
を繰り返し呼び出すことで、リダイレクトチェーン全体を構築できます。
使用方法
例えば、ウェブサイト http://example.com
が https://example.com
にリダイレクトする場合
const response = await page.goto('http://example.com');
console.log(response.request().redirectedFrom().url()); // 'http://example.com'
ウェブサイト https://google.com
にリダイレクトがない場合
const response = await page.goto('https://google.com');
console.log(response.request().redirectedFrom()); // null
戻り値
redirectedTo
追加バージョン: v1.9より前サーバーがリダイレクトで応答した場合に、ブラウザによって発行される新しいリクエスト。
使用方法
このメソッドは request.redirectedFrom() の反対です。
console.log(request.redirectedFrom().redirectedTo() === request); // true
戻り値
resourceType
追加バージョン: v1.9より前レンダリングエンジンによって認識されたリクエストのリソースタイプを含みます。ResourceTypeは次のいずれかになります: document
, stylesheet
, image
, media
, font
, script
, texttrack
, xhr
, fetch
, eventsource
, websocket
, manifest
, other
。
使用方法
request.resourceType();
戻り値
response
追加バージョン: v1.9より前一致する Response オブジェクトを返します。エラーのためにレスポンスが受信されなかった場合は null
を返します。
使用方法
await request.response();
戻り値
serviceWorker
追加バージョン: v1.24リクエストを実行しているService Worker。
使用方法
request.serviceWorker();
戻り値
詳細
このメソッドはChromiumのみです。他のブラウザで使用しても安全ですが、常に null
となります。
Service Workerで発生したリクエストには、request.frame() は利用できません。
sizes
追加バージョン: v1.15指定されたリクエストのリソースサイズ情報を返します。
使用方法
await request.sizes();
戻り値
timing
追加バージョン: v1.9より前指定されたリクエストのリソースタイミング情報を返します。ほとんどのタイミング値はレスポンス時に利用可能になり、responseEnd
はリクエストが完了したときに利用可能になります。Resource Timing API で詳細を確認してください。
使用方法
const requestFinishedPromise = page.waitForEvent('requestfinished');
await page.goto('http://example.com');
const request = await requestFinishedPromise;
console.log(request.timing());
戻り値
- Object#
-
startTime
number1970年1月1日00:00:00 UTCからの経過ミリ秒単位でのリクエスト開始時刻
-
domainLookupStart
numberブラウザがリソースのドメイン名ルックアップを開始する直前の時間。値は
startTime
を基準としたミリ秒単位で、利用できない場合は-1。 -
domainLookupEnd
numberブラウザがリソースのドメイン名ルックアップを開始した直後の時間。値は
startTime
を基準としたミリ秒単位で、利用できない場合は-1。 -
connectStart
numberユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時間。値は
startTime
を基準としたミリ秒単位で、利用できない場合は-1。 -
secureConnectionStart
numberブラウザが現在の接続を保護するためのハンドシェイクプロセスを開始する直前の時間。値は
startTime
を基準としたミリ秒単位で、利用できない場合は-1。 -
connectEnd
numberユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時間。値は
startTime
を基準としたミリ秒単位で、利用できない場合は-1。 -
requestStart
numberブラウザがサーバー、キャッシュ、またはローカルリソースからリソースの要求を開始する直前の時間。値は
startTime
を基準としたミリ秒単位で、利用できない場合は-1。 -
responseStart
numberブラウザがサーバー、キャッシュ、またはローカルリソースからレスポンスの最初のバイトを受信した直後の時間。値は
startTime
を基準としたミリ秒単位で、利用できない場合は-1。 -
responseEnd
numberブラウザがリソースの最後のバイトを受信した直後、またはトランスポート接続が閉じられる直前の時間のいずれか早い方。値は
startTime
を基準としたミリ秒単位で、利用できない場合は-1。
-
url
追加バージョン: v1.9より前リクエストのURL。
使用方法
request.url();
戻り値