跳转到主要内容

Request

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

如果请求在某个时刻失败,则会发出 page.on("requestfailed") 事件,而不是 'requestfinished' 事件(也可能不是 'response' 事件)。

注意

HTTP 错误响应,例如 404 或 503,从 HTTP 角度来看仍然是成功响应,因此请求将以'requestfinished'事件完成。

如果请求收到“重定向”响应,则该请求将成功地以requestfinished事件完成,并且会向重定向的 URL 发出新请求。


方法

所有头部

新增于: v1.15 request.all_headers

一个包含与此请求关联的所有请求 HTTP 标头的对象。标头名称是小写。

用法

request.all_headers()

返回


头部值

新增于: v1.15 request.header_value

返回与名称匹配的标头的值。名称不区分大小写。

用法

request.header_value(name)

参数

返回


头部数组

新增于: 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()

返回

  • 字典#
    • requestBodySize 整数

      请求正文(POST 数据有效负载)的大小,以字节为单位。如果没有正文,则设置为 0。

    • requestHeadersSize 整数

      从 HTTP 请求消息开始到(包括)正文前的双 CRLF 的总字节数。

    • responseBodySize 整数

      接收到的响应正文(编码后)的大小,以字节为单位。

    • responseHeadersSize 整数

      从 HTTP 响应消息开始到(包括)正文前的双 CRLF 的总字节数。


属性

failure

v1.9 之前添加 request.failure

此方法返回null,除非此请求已失败,如requestfailed事件报告的那样。

用法

记录所有失败请求的示例

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

返回


frame

v1.9 之前添加 request.frame

返回发起此请求的 Frame

用法

frame_url = request.frame.url

返回

详情

请注意,在某些情况下,frame 不可用,此方法将抛出错误。

  • 当请求源自 Service Worker 时。您可以使用request.serviceWorker()进行检查。
  • 当导航请求在相应的 frame 创建之前发出时。您可以使用 request.is_navigation_request() 来检查。

这是一个处理所有情况的示例


headers

v1.9 之前添加 request.headers

一个包含请求 HTTP 头部的对象。头部名称为小写。请注意,此方法不返回与安全相关的头部,包括与 Cookie 相关的头部。您可以使用 request.all_headers() 获取包含 cookie 信息的完整头部列表。

用法

request.headers

返回


是否为导航请求

v1.9 之前添加 request.is_navigation_request

此请求是否正在驱动 frame 的导航。

一些导航请求在相应的 frame 创建之前发出,因此没有可用的 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

返回


重定向来源

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

返回


重定向目标

v1.9 之前添加 request.redirected_to

如果服务器响应重定向,浏览器发出的新请求。

用法

此方法与 request.redirected_from 相反

assert request.redirected_from.redirected_to == request

返回


资源类型

v1.9 之前添加 request.resource_type

包含请求的资源类型,如渲染引擎所感知。ResourceType 将是以下之一:documentstylesheetimagemediafontscripttexttrackxhrfetcheventsourcewebsocketmanifestother

用法

request.resource_type

返回


timing

v1.9 之前添加 request.timing

返回给定请求的资源计时信息。大多数计时值在响应时可用,responseEnd 在请求完成时可用。在 资源计时 API 中查找更多信息。

用法

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

返回

  • 字典#
    • startTime 浮点数

      请求开始时间,自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数

    • domainLookupStart 浮点数

      浏览器开始查找资源域名之前的时间。该值以相对于startTime的毫秒数给出,如果不可用则为 -1。

    • domainLookupEnd 浮点数

      浏览器开始查找资源域名之后的时间。该值以相对于startTime的毫秒数给出,如果不可用则为 -1。

    • connectStart 浮点数

      用户代理开始建立与服务器的连接以检索资源之前的时间。该值以相对于startTime的毫秒数给出,如果不可用则为 -1。

    • secureConnectionStart 浮点数

      浏览器开始握手过程以保护当前连接之前的时间。该值以相对于startTime的毫秒数给出,如果不可用则为 -1。

    • connectEnd 浮点数

      用户代理开始建立与服务器的连接以检索资源之前的时间。该值以相对于startTime的毫秒数给出,如果不可用则为 -1。

    • requestStart 浮点数

      浏览器开始从服务器、缓存或本地资源请求资源之前的时间。该值以相对于startTime的毫秒数给出,如果不可用则为 -1。

    • responseStart 浮点数

      浏览器从服务器、缓存或本地资源收到响应的第一个字节之后的时间。该值以相对于startTime的毫秒数给出,如果不可用则为 -1。

    • responseEnd 浮点数

      浏览器收到资源的最后一个字节之后的时间,或者传输连接关闭之前的时间,以先发生者为准。该值以相对于startTime的毫秒数给出,如果不可用则为 -1。


url

v1.9 之前添加 request.url

请求的 URL。

用法

request.url

返回