Request
每当页面发送网络资源请求时,由 Page 发出以下事件序列
- Page.onRequest(handler) 在页面发出请求时触发。
- Page.onResponse(handler) 在收到请求的响应状态和标头时触发。
- Page.onRequestFinished(handler) 在下载完响应体且请求完成时触发。
如果请求在某个时刻失败,那么将触发 Page.onRequestFailed(handler) 事件,而不是 'requestfinished'
事件(也可能不是 'response' 事件)。
HTTP 错误响应,例如 404 或 503,从 HTTP 的角度来看仍然是成功的响应,因此请求将以 'requestfinished'
事件完成。
如果请求获得“重定向”响应,请求将以 requestfinished
事件成功完成,并且会向重定向的 URL 发出新的请求。
方法
allHeaders
添加于: v1.15一个包含与此请求关联的所有请求 HTTP 标头的对象。标头名称已转换为小写。
用法
Request.allHeaders();
返回值
failure
添加于 v1.9 之前除非此请求已失败(由 requestfailed
事件报告),否则此方法返回 null
。
用法
记录所有失败请求的示例
page.onRequestFailed(request -> {
System.out.println(request.url() + " " + request.failure());
});
返回值
frame
添加于 v1.9 之前返回发起此请求的 Frame。
用法
String frameUrl = request.frame().url();
返回值
详情
请注意,在某些情况下,框架可能不可用,此时此方法将抛出异常。
- 当请求源自 Service Worker 时。您可以使用
request.serviceWorker()
进行检查。 - 在创建相应的框架之前发出导航请求时。您可以使用 Request.isNavigationRequest() 进行检查。
以下是处理所有情况的示例
headerValue
添加于: v1.15返回与名称匹配的标头值。名称不区分大小写。
用法
Request.headerValue(name);
参数
返回值
headers
添加于 v1.9 之前一个包含请求 HTTP 标头的对象。标头名称已转换为小写。请注意,此方法不返回与安全相关的标头,包括与 cookie 相关的标头。您可以使用 Request.allHeaders() 获取包含 cookie 信息的完整标头列表。
用法
Request.headers();
返回值
headersArray
添加于: v1.15一个包含与此请求关联的所有请求 HTTP 标头的数组。与 Request.allHeaders() 不同,标头名称未转换为小写。具有多个条目的标头(例如 Set-Cookie)会在数组中出现多次。
用法
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();
返回值
redirectedFrom
添加于 v1.9 之前如果服务器将请求重定向到此请求,则返回原始请求。
当服务器响应重定向时,Playwright 会创建一个新的 Request 对象。这两个请求通过 redirectedFrom()
和 redirectedTo()
方法连接。当发生多次服务器重定向时,可以通过重复调用 redirectedFrom()
来构建完整的重定向链。
用法
例如,如果网站 http://example.com
重定向到 https://example.com
Response response = page.navigate("http://example.com");
System.out.println(response.request().redirectedFrom().url()); // "http://example.com"
如果网站 https://google.com
没有重定向
Response response = page.navigate("https://google.com");
System.out.println(response.request().redirectedFrom()); // null
返回值
redirectedTo
添加于 v1.9 之前如果服务器响应了重定向,则浏览器发出的新请求。
用法
此方法与 Request.redirectedFrom() 相反
System.out.println(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
。
用法
Request.response();
返回值
sizes
添加于: v1.15返回给定请求的资源大小信息。
用法
Request.sizes();
返回值
- Sizes#
timing
添加于 v1.9 之前返回给定请求的资源计时信息。大多数计时值在响应到达时可用,responseEnd
在请求完成时可用。更多信息请参见 Resource Timing API。
用法
page.onRequestFinished(request -> {
Timing timing = request.timing();
System.out.println(timing.responseEnd - timing.startTime);
});
page.navigate("http://example.com");
返回值
- Timing#
-
startTime
double请求开始时间(自 1970 年 1 月 1 日 00:00:00 UTC 起经过的毫秒数)
-
domainLookupStart
double浏览器开始对资源进行域名查找之前的时间。该值以相对于
startTime
的毫秒表示,如果不可用则为 -1。 -
domainLookupEnd
double浏览器开始对资源进行域名查找之后的时间。该值以相对于
startTime
的毫秒表示,如果不可用则为 -1。 -
connectStart
double用户代理开始建立与服务器连接以检索资源之前的时间。该值以相对于
startTime
的毫秒表示,如果不可用则为 -1。 -
secureConnectionStart
double浏览器开始握手过程以确保当前连接安全之前的时间。该值以相对于
startTime
的毫秒表示,如果不可用则为 -1。 -
connectEnd
double用户代理开始建立与服务器连接以检索资源之前的时间。该值以相对于
startTime
的毫秒表示,如果不可用则为 -1。 -
requestStart
double浏览器开始从服务器、缓存或本地资源请求资源之前的时间。该值以相对于
startTime
的毫秒表示,如果不可用则为 -1。 -
responseStart
double浏览器从服务器、缓存或本地资源接收到响应的第一个字节之后的时间。该值以相对于
startTime
的毫秒表示,如果不可用则为 -1。 -
responseEnd
double浏览器接收到资源的最后一个字节之后或传输连接关闭之前的时间(以先发生者为准)。该值以相对于
startTime
的毫秒表示,如果不可用则为 -1。
-
url
添加于 v1.9 之前请求的 URL。
用法
Request.url();
返回值