跳到主要內容

Request

每當頁面發送網路資源請求時,Page 都會發出以下事件序列

如果請求在某些時候失敗,則會發出 page.on("requestfailed") 事件,而不是 'requestfinished' 事件(也可能取代 'response' 事件)。

注意

HTTP 錯誤回應(例如 404 或 503)從 HTTP 的角度來看仍然是成功的回應,因此請求將以 'requestfinished' 事件完成。

如果請求收到「重新導向」回應,則請求會以 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()

回傳


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 相關的標頭。您可以使用 request.all_headers() 來取得包含 cookie 資訊的完整標頭清單。

用法

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 物件。這兩個請求透過 redirectedFrom()redirectedTo() 方法連接。當發生多次伺服器重新導向時,可以透過重複呼叫 redirectedFrom() 來建構完整的重新導向鏈。

用法

例如,如果網站 http://example.com 重新導向至 https://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

回傳