跳至主要内容

请求

每当页面发送网络资源请求时,Page 都会发出以下事件序列

如果请求在某个点失败,则代替 'requestfinished' 事件(可能代替 'response' 事件),会发出 page.on("requestfailed") 事件。

注意

从 HTTP 的角度来看,HTTP 错误响应(例如 404 或 503)仍然是成功的响应,因此请求将使用 '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

返回值

详情

请注意,在某些情况下,框架不可用,此方法将抛出异常。

  • 当请求源自服务工作线程时。您可以使用 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

返回值