Class: Playwright::Request

Inherits:
PlaywrightApi show all
Defined in:
lib/playwright_api/request.rb

Overview

Whenever the page sends a request for a network resource the following sequence of events are emitted by ‘Page`:

  • ‘event: Page.request`

    emitted when the request is issued by the page.

  • ‘event: Page.response`

    emitted when/if the response status and headers are received for the request.

  • ‘event: Page.requestFinished`

    emitted when the response body is downloaded and the request is complete.

If request fails at some point, then instead of ‘’requestfinished’‘ event (and possibly instead of ’response’ event), the [‘event: Page.requestFailed`] event is emitted.

NOTE: HTTP Error responses, such as 404 or 503, are still successful responses from HTTP standpoint, so request will complete with ‘’requestfinished’‘ event.

If request gets a ‘redirect’ response, the request is successfully finished with the ‘requestfinished` event, and a new request is issued to a redirected url.

Instance Method Summary collapse

Methods inherited from PlaywrightApi

#initialize, unwrap, wrap

Constructor Details

This class inherits a constructor from Playwright::PlaywrightApi

Instance Method Details

#all_headersObject

An object with all the request HTTP headers associated with this request. The header names are lower-cased.



20
21
22
# File 'lib/playwright_api/request.rb', line 20

def all_headers
  wrap_impl(@impl.all_headers)
end

#apply_fallback_overrides(overrides) ⇒ Object



199
200
201
# File 'lib/playwright_api/request.rb', line 199

def apply_fallback_overrides(overrides)
  wrap_impl(@impl.apply_fallback_overrides(unwrap_impl(overrides)))
end

#failureObject

The method returns ‘null` unless this request has failed, as reported by `requestfailed` event.

Usage

Example of logging of all the failed requests:

“‘py page.on(“requestfailed”, lambda request: print(request.url + “ ” + request.failure)) “`



34
35
36
# File 'lib/playwright_api/request.rb', line 34

def failure
  wrap_impl(@impl.failure)
end

#frameObject

Returns the ‘Frame` that initiated this request.

Usage

“‘py frame_url = request.frame.url “`

Details

Note that in some cases the frame is not available, and this method will throw.

  • When request originates in the Service Worker. You can use ‘request.serviceWorker()` to check that.

  • When navigation request is issued before the corresponding frame is created. You can use [‘method: Request.isNavigationRequest`] to check that.

Here is an example that handles all the cases:



54
55
56
# File 'lib/playwright_api/request.rb', line 54

def frame
  wrap_impl(@impl.frame)
end

#header_value(name) ⇒ Object

Returns the value of the header matching the name. The name is case-insensitive.



75
76
77
# File 'lib/playwright_api/request.rb', line 75

def header_value(name)
  wrap_impl(@impl.header_value(unwrap_impl(name)))
end

#header_values(name) ⇒ Object



204
205
206
# File 'lib/playwright_api/request.rb', line 204

def header_values(name)
  wrap_impl(@impl.header_values(unwrap_impl(name)))
end

#headersObject

An object with the request HTTP headers. The header names are lower-cased. Note that this method does not return security-related headers, including cookie-related ones. You can use [‘method: Request.allHeaders`] for complete list of headers that include `cookie` information.



62
63
64
# File 'lib/playwright_api/request.rb', line 62

def headers
  wrap_impl(@impl.headers)
end

#headers_arrayObject

An array with all the request HTTP headers associated with this request. Unlike [‘method: Request.allHeaders`], header names are NOT lower-cased. Headers with multiple entries, such as `Set-Cookie`, appear in the array multiple times.



69
70
71
# File 'lib/playwright_api/request.rb', line 69

def headers_array
  wrap_impl(@impl.headers_array)
end

#methodObject

Request’s method (GET, POST, etc.)



90
91
92
# File 'lib/playwright_api/request.rb', line 90

def method
  wrap_impl(@impl.method)
end

Whether this request is driving frame’s navigation.

Some navigation requests are issued before the corresponding frame is created, and therefore do not have [‘method: Request.frame`] available.

Returns:

  • (Boolean)


84
85
86
# File 'lib/playwright_api/request.rb', line 84

def navigation_request?
  wrap_impl(@impl.navigation_request?)
end

#off(event, callback) ⇒ Object

– inherited from EventEmitter –



222
223
224
# File 'lib/playwright_api/request.rb', line 222

def off(event, callback)
  event_emitter_proxy.off(event, callback)
end

#on(event, callback) ⇒ Object

– inherited from EventEmitter –



216
217
218
# File 'lib/playwright_api/request.rb', line 216

def on(event, callback)
  event_emitter_proxy.on(event, callback)
end

#once(event, callback) ⇒ Object

– inherited from EventEmitter –



210
211
212
# File 'lib/playwright_api/request.rb', line 210

def once(event, callback)
  event_emitter_proxy.once(event, callback)
end

#post_dataObject

Request’s post body, if any.



96
97
98
# File 'lib/playwright_api/request.rb', line 96

def post_data
  wrap_impl(@impl.post_data)
end

#post_data_bufferObject

Request’s post body in a binary form, if any.



102
103
104
# File 'lib/playwright_api/request.rb', line 102

def post_data_buffer
  wrap_impl(@impl.post_data_buffer)
end

#post_data_jsonObject

Returns parsed request’s body for ‘form-urlencoded` and JSON as a fallback if any.

When the response is ‘application/x-www-form-urlencoded` then a key/value object of the values will be returned. Otherwise it will be parsed as JSON.



111
112
113
# File 'lib/playwright_api/request.rb', line 111

def post_data_json
  wrap_impl(@impl.post_data_json)
end

#redirected_fromObject

Request that was redirected by the server to this one, if any.

When the server responds with a redirect, Playwright creates a new ‘Request` object. The two requests are connected by `redirectedFrom()` and `redirectedTo()` methods. When multiple server redirects has happened, it is possible to construct the whole redirect chain by repeatedly calling `redirectedFrom()`.

Usage

For example, if the website ‘example.com` redirects to `example.com`:

“‘python sync response = page.goto(“example.com”) print(response.request.redirected_from.url) # “example.com” “`

If the website ‘google.com` has no redirects:

“‘python sync response = page.goto(“google.com”) print(response.request.redirected_from) # None “`



137
138
139
# File 'lib/playwright_api/request.rb', line 137

def redirected_from
  wrap_impl(@impl.redirected_from)
end

#redirected_toObject

New request issued by the browser if the server responded with redirect.

Usage

This method is the opposite of [‘method: Request.redirectedFrom`]:

“‘py assert request.redirected_from.redirected_to == request “`



151
152
153
# File 'lib/playwright_api/request.rb', line 151

def redirected_to
  wrap_impl(@impl.redirected_to)
end

#resource_typeObject

Contains the request’s resource type as it was perceived by the rendering engine. ResourceType will be one of the following: ‘document`, `stylesheet`, `image`, `media`, `font`, `script`, `texttrack`, `xhr`, `fetch`, `eventsource`, `websocket`, `manifest`, `other`.



159
160
161
# File 'lib/playwright_api/request.rb', line 159

def resource_type
  wrap_impl(@impl.resource_type)
end

#responseObject

Returns the matching ‘Response` object, or `null` if the response was not received due to error.



165
166
167
# File 'lib/playwright_api/request.rb', line 165

def response
  wrap_impl(@impl.response)
end

#sizesObject

Returns resource size information for given request.



171
172
173
# File 'lib/playwright_api/request.rb', line 171

def sizes
  wrap_impl(@impl.sizes)
end

#timingObject

Returns resource timing information for given request. Most of the timing values become available upon the response, ‘responseEnd` becomes available when request finishes. Find more information at [Resource Timing API](developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming).

Usage

“‘python sync with page.expect_event(“requestfinished”) as request_info:

page.goto("http://example.com")

request = request_info.value print(request.timing) “‘



188
189
190
# File 'lib/playwright_api/request.rb', line 188

def timing
  wrap_impl(@impl.timing)
end

#urlObject

URL of the request.



194
195
196
# File 'lib/playwright_api/request.rb', line 194

def url
  wrap_impl(@impl.url)
end