Class: Playwright::Request
- Inherits:
-
PlaywrightApi
- Object
- PlaywrightApi
- Playwright::Request
- 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
-
#all_headers ⇒ Object
An object with all the request HTTP headers associated with this request.
- #apply_fallback_overrides(overrides) ⇒ Object
-
#failure ⇒ Object
The method returns ‘null` unless this request has failed, as reported by `requestfailed` event.
-
#frame ⇒ Object
Returns the ‘Frame` that initiated this request.
-
#header_value(name) ⇒ Object
Returns the value of the header matching the name.
- #header_values(name) ⇒ Object
-
#headers ⇒ Object
An object with the request HTTP headers.
-
#headers_array ⇒ Object
An array with all the request HTTP headers associated with this request.
-
#method ⇒ Object
Request’s method (GET, POST, etc.).
-
#navigation_request? ⇒ Boolean
Whether this request is driving frame’s navigation.
-
#off(event, callback) ⇒ Object
– inherited from EventEmitter –.
-
#on(event, callback) ⇒ Object
– inherited from EventEmitter –.
-
#once(event, callback) ⇒ Object
– inherited from EventEmitter –.
-
#post_data ⇒ Object
Request’s post body, if any.
-
#post_data_buffer ⇒ Object
Request’s post body in a binary form, if any.
-
#post_data_json ⇒ Object
Returns parsed request’s body for ‘form-urlencoded` and JSON as a fallback if any.
-
#redirected_from ⇒ Object
Request that was redirected by the server to this one, if any.
-
#redirected_to ⇒ Object
New request issued by the browser if the server responded with redirect.
-
#resource_type ⇒ Object
Contains the request’s resource type as it was perceived by the rendering engine.
-
#response ⇒ Object
Returns the matching ‘Response` object, or `null` if the response was not received due to error.
-
#sizes ⇒ Object
Returns resource size information for given request.
-
#timing ⇒ Object
Returns resource timing information for given request.
-
#url ⇒ Object
URL of the request.
Methods inherited from PlaywrightApi
Constructor Details
This class inherits a constructor from Playwright::PlaywrightApi
Instance Method Details
#all_headers ⇒ Object
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 |
#failure ⇒ Object
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 |
#frame ⇒ Object
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 |
#headers ⇒ Object
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_array ⇒ Object
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 |
#method ⇒ Object
Request’s method (GET, POST, etc.)
90 91 92 |
# File 'lib/playwright_api/request.rb', line 90 def method wrap_impl(@impl.method) end |
#navigation_request? ⇒ Boolean
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.
84 85 86 |
# File 'lib/playwright_api/request.rb', line 84 def wrap_impl(@impl.) 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_data ⇒ Object
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_buffer ⇒ Object
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_json ⇒ Object
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_from ⇒ Object
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_to ⇒ Object
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_type ⇒ Object
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 |
#response ⇒ Object
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 |
#sizes ⇒ Object
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 |
#timing ⇒ Object
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 |
#url ⇒ Object
URL of the request.
194 195 196 |
# File 'lib/playwright_api/request.rb', line 194 def url wrap_impl(@impl.url) end |