メインコンテンツへスキップ

Request

ページがネットワークリソースへのリクエストを送信するたびに、以下のイベントシーケンスがPageによって発行されます。

  • page.on("request") リクエストがページによって発行されたときに発行されます。
  • page.on("response") リクエストに対するレスポンスステータスとヘッダーが受信されたとき(または受信された場合)に発行されます。
  • page.on("requestfinished") レスポンスボディがダウンロードされ、リクエストが完了したときに発行されます。

リクエストが途中で失敗した場合、'requestfinished'イベント(および場合によっては'response'イベントの代わりに)、page.on("requestfailed")イベントが発行されます。

404や503などのHTTPエラーレスポンスは、HTTPの観点からは依然として成功したレスポンスであるため、リクエストは'requestfinished'イベントで完了します。

リクエストが'redirect'レスポンスを受け取った場合、リクエストはrequestfinishedイベントで正常に完了し、リダイレクトされたURLに新しいリクエストが発行されます。


メソッド

all_headers

v1.15で追加 request.all_headers

このリクエストに関連付けられたすべてのリクエストHTTPヘッダーを持つオブジェクト。ヘッダー名は小文字です。

使用法

request.all_headers()

戻り値


header_value

v1.15で追加 request.header_value

名前が一致するヘッダーの値を返します。名前は大文字と小文字を区別しません。

使用法

request.header_value(name)

引数

  • name str#

    ヘッダーの名前。

戻り値


headers_array

v1.15で追加 request.headers_array

このリクエストに関連付けられたすべてのリクエストHTTPヘッダーを持つ配列。request.all_headers()とは異なり、ヘッダー名は小文字化されていません。Set-Cookieなど、複数のエントリを持つヘッダーは、配列に複数回表示されます。

使用法

request.headers_array()

戻り値

  • List[Dict]#
    • name str

      ヘッダーの名前。

    • value str

      ヘッダーの値。


response

v1.9より前に追加 request.response

一致するResponseオブジェクトを返します。エラーによりレスポンスが受信されなかった場合はnullを返します。

使用法

request.response()

戻り値


sizes

v1.15で追加 request.sizes

指定されたリクエストのリソースサイズ情報を返します。

使用法

request.sizes()

戻り値

  • Dict#
    • requestBodySize int

      リクエストボディ(POSTデータペイロード)のサイズ(バイト単位)。ボディがない場合は0に設定されます。

    • requestHeadersSize int

      HTTPリクエストメッセージの先頭から、ボディの前の二重CRLF(キャリッジリターンとラインフィード)まで(両端を含む)の合計バイト数。

    • responseBodySize int

      受信したレスポンスボディのサイズ(エンコード済み、バイト単位)。

    • responseHeadersSize int

      HTTPレスポンスメッセージの先頭から、ボディの前の二重CRLF(キャリッジリターンとラインフィード)まで(両端を含む)の合計バイト数。


プロパティ

failure

v1.9より前に追加 request.failure

このメソッドは、requestfailedイベントによって報告されたように、このリクエストが失敗した場合を除き、nullを返します。

使用法

失敗したすべてのリクエストのログ記録の例

page.on("requestfailed", lambda request: print(request.url + " " + request.failure))

戻り値


frame

v1.9より前に追加 request.frame

このリクエストを開始したFrameを返します。

使用法

frame_url = request.frame.url

戻り値

詳細

場合によってはフレームが利用できないため、このメソッドは例外をスローすることに注意してください。

  • リクエストがService Workerで発生した場合。request.serviceWorker()を使用して確認できます。
  • ナビゲーションリクエストが、対応するフレームが作成される前に発行された場合。request.is_navigation_request()を使用して確認できます。

すべてのケースを処理する例を次に示します。


headers

v1.9より前に追加 request.headers

リクエストHTTPヘッダーを持つオブジェクト。ヘッダー名は小文字です。このメソッドは、cookie関連のものを含むセキュリティ関連のヘッダーを返さないことに注意してください。cookie情報を含むヘッダーの完全なリストについては、request.all_headers()を使用できます。

使用法

request.headers

戻り値


is_navigation_request

v1.9より前に追加 request.is_navigation_request

このリクエストがフレームのナビゲーションを駆動しているかどうか。

一部のナビゲーションリクエストは、対応するフレームが作成される前に発行されるため、request.frameを利用できません。

使用法

request.is_navigation_request()

戻り値


method

v1.9より前に追加 request.method

リクエストのメソッド(GET、POSTなど)

使用法

request.method

戻り値


post_data

v1.9より前に追加 request.post_data

リクエストのPOSTボディ(存在する場合)。

使用法

request.post_data

戻り値


post_data_buffer

v1.9より前に追加 request.post_data_buffer

リクエストのPOSTボディをバイナリ形式で(存在する場合)。

使用法

request.post_data_buffer

戻り値


post_data_json

v1.9より前に追加 request.post_data_json

form-urlencodedおよびJSONのリクエストボディを解析して返します(フォールバックとして)。

レスポンスがapplication/x-www-form-urlencodedの場合、値のキー/バリューオブジェクトが返されます。それ以外の場合はJSONとして解析されます。

使用法

request.post_data_json

戻り値


redirected_from

v1.9より前に追加 request.redirected_from

サーバーによってこのリクエストにリダイレクトされたリクエスト(存在する場合)。

サーバーがリダイレクトで応答すると、Playwrightは新しいRequestオブジェクトを作成します。2つのリクエストは、redirectedFrom()およびredirectedTo()メソッドによって接続されています。複数のサーバーリダイレクトが発生した場合、redirectedFrom()を繰り返し呼び出すことで、リダイレクトチェーン全体を構築できます。

使用法

たとえば、ウェブサイトhttp://example.comhttps://example.comにリダイレクトする場合

response = page.goto("http://example.com")
print(response.request.redirected_from.url) # "http://example.com"

ウェブサイトhttps://google.comにリダイレクトがない場合

response = page.goto("https://google.com")
print(response.request.redirected_from) # None

戻り値


redirected_to

v1.9より前に追加 request.redirected_to

サーバーがリダイレクトで応答した場合にブラウザによって発行された新しいリクエスト。

使用法

このメソッドはrequest.redirected_fromの反対です。

assert request.redirected_from.redirected_to == request

戻り値


resource_type

v1.9より前に追加 request.resource_type

レンダリングエンジンによって認識されたリクエストのリソースタイプが含まれています。ResourceTypeは、documentstylesheetimagemediafontscripttexttrackxhrfetcheventsourcewebsocketmanifestotherのいずれかになります。

使用法

request.resource_type

戻り値


timing

v1.9より前に追加 request.timing

指定されたリクエストのリソースタイミング情報を返します。ほとんどのタイミング値はレスポンスで利用可能になり、responseEndはリクエストが完了したときに利用可能になります。詳細については、Resource Timing APIを参照してください。

使用法

with page.expect_event("requestfinished") as request_info:
page.goto("http://example.com")
request = request_info.value
print(request.timing)

戻り値

  • Dict#
    • startTime float

      1970年1月1日00:00:00 UTCからの経過ミリ秒単位のリクエスト開始時間

    • domainLookupStart float

      ブラウザがリソースのドメイン名ルックアップを開始する直前の時間。値はstartTimeからの相対ミリ秒単位で、利用できない場合は-1です。

    • domainLookupEnd float

      ブラウザがリソースのドメイン名ルックアップを開始した直後の時間。値はstartTimeからの相対ミリ秒単位で、利用できない場合は-1です。

    • connectStart float

      ユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時間。値はstartTimeからの相対ミリ秒単位で、利用できない場合は-1です。

    • secureConnectionStart float

      ブラウザが現在の接続をセキュリティで保護するためのハンドシェイクプロセスを開始する直前の時間。値はstartTimeからの相対ミリ秒単位で、利用できない場合は-1です。

    • connectEnd float

      ユーザーエージェントがリソースを取得するためにサーバーへの接続を確立し始める直前の時間。値はstartTimeからの相対ミリ秒単位で、利用できない場合は-1です。

    • requestStart float

      ブラウザがサーバー、キャッシュ、またはローカルリソースからリソースのリクエストを開始する直前の時間。値はstartTimeからの相対ミリ秒単位で、利用できない場合は-1です。

    • responseStart float

      ブラウザがサーバー、キャッシュ、またはローカルリソースからレスポンスの最初のバイトを受信した直後の時間。値はstartTimeからの相対ミリ秒単位で、利用できない場合は-1です。

    • responseEnd float

      ブラウザがリソースの最後のバイトを受信した直後、またはトランスポート接続が閉じられる直前のいずれか早い方の時間。値はstartTimeからの相対ミリ秒単位で、利用できない場合は-1です。


url

v1.9より前に追加 request.url

リクエストのURL。

使用法

request.url

戻り値