playwright-ruby-client 1.21.0 → 1.24.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/browser.md +30 -5
  3. data/documentation/docs/api/browser_context.md +20 -7
  4. data/documentation/docs/api/browser_type.md +4 -0
  5. data/documentation/docs/api/download.md +1 -1
  6. data/documentation/docs/api/element_handle.md +20 -12
  7. data/documentation/docs/api/experimental/android.md +1 -1
  8. data/documentation/docs/api/experimental/android_device.md +4 -0
  9. data/documentation/docs/api/file_chooser.md +2 -2
  10. data/documentation/docs/api/frame.md +12 -5
  11. data/documentation/docs/api/locator.md +43 -13
  12. data/documentation/docs/api/page.md +31 -11
  13. data/documentation/docs/api/request.md +3 -1
  14. data/documentation/docs/api/response.md +12 -1
  15. data/documentation/docs/api/route.md +67 -0
  16. data/documentation/docs/api/selectors.md +2 -2
  17. data/documentation/docs/api/tracing.md +1 -1
  18. data/documentation/docs/include/api_coverage.md +6 -3
  19. data/documentation/package.json +4 -4
  20. data/documentation/yarn.lock +1876 -1304
  21. data/lib/playwright/channel.rb +1 -3
  22. data/lib/playwright/channel_owners/browser.rb +13 -0
  23. data/lib/playwright/channel_owners/browser_context.rb +81 -13
  24. data/lib/playwright/channel_owners/browser_type.rb +4 -0
  25. data/lib/playwright/channel_owners/frame.rb +16 -2
  26. data/lib/playwright/channel_owners/local_utils.rb +29 -0
  27. data/lib/playwright/channel_owners/page.rb +43 -15
  28. data/lib/playwright/channel_owners/request.rb +31 -6
  29. data/lib/playwright/channel_owners/response.rb +6 -0
  30. data/lib/playwright/channel_owners/route.rb +104 -45
  31. data/lib/playwright/connection.rb +6 -1
  32. data/lib/playwright/har_router.rb +82 -0
  33. data/lib/playwright/http_headers.rb +1 -1
  34. data/lib/playwright/javascript/regex.rb +23 -0
  35. data/lib/playwright/javascript/value_parser.rb +21 -2
  36. data/lib/playwright/javascript/value_serializer.rb +18 -6
  37. data/lib/playwright/javascript/visitor_info.rb +26 -0
  38. data/lib/playwright/javascript.rb +1 -0
  39. data/lib/playwright/locator_impl.rb +13 -5
  40. data/lib/playwright/playwright_api.rb +26 -6
  41. data/lib/playwright/route_handler.rb +2 -6
  42. data/lib/playwright/utils.rb +31 -6
  43. data/lib/playwright/version.rb +2 -2
  44. data/lib/playwright.rb +2 -0
  45. data/lib/playwright_api/android.rb +8 -8
  46. data/lib/playwright_api/android_device.rb +11 -7
  47. data/lib/playwright_api/api_request_context.rb +6 -6
  48. data/lib/playwright_api/browser.rb +34 -8
  49. data/lib/playwright_api/browser_context.rb +21 -11
  50. data/lib/playwright_api/browser_type.rb +11 -7
  51. data/lib/playwright_api/cdp_session.rb +6 -6
  52. data/lib/playwright_api/console_message.rb +6 -6
  53. data/lib/playwright_api/dialog.rb +6 -6
  54. data/lib/playwright_api/download.rb +1 -1
  55. data/lib/playwright_api/element_handle.rb +26 -24
  56. data/lib/playwright_api/file_chooser.rb +2 -2
  57. data/lib/playwright_api/frame.rb +18 -11
  58. data/lib/playwright_api/js_handle.rb +6 -6
  59. data/lib/playwright_api/locator.rb +38 -19
  60. data/lib/playwright_api/page.rb +33 -16
  61. data/lib/playwright_api/playwright.rb +8 -8
  62. data/lib/playwright_api/request.rb +14 -7
  63. data/lib/playwright_api/response.rb +20 -7
  64. data/lib/playwright_api/route.rb +69 -8
  65. data/lib/playwright_api/selectors.rb +7 -7
  66. data/lib/playwright_api/tracing.rb +7 -7
  67. data/lib/playwright_api/web_socket.rb +6 -6
  68. data/lib/playwright_api/worker.rb +8 -8
  69. metadata +6 -4
  70. data/lib/playwright_api/local_utils.rb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5e2dee736be02c56e75b6a89e2eab014c4d205ca23688b30084ea3854f50dfda
4
- data.tar.gz: a213f955daad15c58bc1edd1b123cb6768cbc6df5ec6be0b09e537a8b6ea22ec
3
+ metadata.gz: 4e87b002bd3cd1dfaf592f6be37902b0a0604553d419b8b7516e0e887584125a
4
+ data.tar.gz: 5b956c57000f12dc8399df4382dd301a7ef1d47551782afff0fae0871892c630
5
5
  SHA512:
6
- metadata.gz: eba2fed3585b9ef5aa1b068cfc3294acc0f134e1ecccec6fae465bfd8df52c2395d02d706cb8958342c8e1af8be2066b537bc7af9eb3da1fe3748536677ba0c0
7
- data.tar.gz: 2264ea9fd32bd7b02e15453a17876c2ee5fa8d51fb5eca652242959254ead0fda4ee721e9c35a1a24c1dc005d42268fd49b4566bd844841499bb8933ba83b8a3
6
+ metadata.gz: e3a418d6d40392a157016b164455e8cdc83bffb696c182d68d2ce10cb1e7315be151fb4be78e5b985871ba75ef1882be262d05c93a0b3a65a3c3b8b9c7373fb2
7
+ data.tar.gz: db086e5ff1cdbc8cee9d1aea80601e2f9664c4806478aa556fd91e6b647bc71d23b9f0862ed60711365e06e67d513717c5e01b3d7b60c1a5b9438535ef8394e5
@@ -21,6 +21,14 @@ end
21
21
 
22
22
 
23
23
 
24
+ ## browser_type
25
+
26
+ ```
27
+ def browser_type
28
+ ```
29
+
30
+ Get the browser type (chromium, firefox or webkit) that the browser belongs to.
31
+
24
32
  ## close
25
33
 
26
34
  ```
@@ -33,6 +41,10 @@ were opened).
33
41
  In case this browser is connected to, clears all created contexts belonging to this browser and disconnects from the
34
42
  browser server.
35
43
 
44
+ > NOTE: This is similar to force quitting the browser. Therefore, you should call [BrowserContext#close](./browser_context#close) on
45
+ any [BrowserContext](./browser_context)'s you explicitly created earlier with [Browser#new_context](./browser#new_context) **before** calling
46
+ [Browser#close](./browser#close).
47
+
36
48
  The [Browser](./browser) object itself is considered to be disposed and cannot be used anymore.
37
49
 
38
50
  ## contexts
@@ -93,12 +105,16 @@ def new_context(
93
105
  offline: nil,
94
106
  permissions: nil,
95
107
  proxy: nil,
108
+ record_har_content: nil,
109
+ record_har_mode: nil,
96
110
  record_har_omit_content: nil,
97
111
  record_har_path: nil,
112
+ record_har_url_filter: nil,
98
113
  record_video_dir: nil,
99
114
  record_video_size: nil,
100
115
  reducedMotion: nil,
101
116
  screen: nil,
117
+ serviceWorkers: nil,
102
118
  storageState: nil,
103
119
  strictSelectors: nil,
104
120
  timezoneId: nil,
@@ -109,14 +125,19 @@ def new_context(
109
125
 
110
126
  Creates a new browser context. It won't share cookies/cache with other browser contexts.
111
127
 
128
+ > NOTE: If directly using this method to create [BrowserContext](./browser_context)s, it is best practice to explicilty close the returned
129
+ context via [BrowserContext#close](./browser_context#close) when your code is done with the [BrowserContext](./browser_context), and before calling
130
+ [Browser#close](./browser#close). This will ensure the `context` is closed gracefully and any artifacts—like HARs and
131
+ videos—are fully flushed and saved.
132
+
112
133
  ```ruby
113
134
  playwright.firefox.launch do |browser| # or "chromium.launch" or "webkit.launch".
114
135
  # create a new incognito browser context.
115
- context = browser.new_context
116
-
117
- # create a new page in a pristine context.
118
- page = context.new_page()
119
- page.goto("https://example.com")
136
+ browser.new_context do |context|
137
+ # create a new page in a pristine context.
138
+ page = context.new_page
139
+ page.goto("https://example.com")
140
+ end
120
141
  end
121
142
  ```
122
143
 
@@ -144,12 +165,16 @@ def new_page(
144
165
  offline: nil,
145
166
  permissions: nil,
146
167
  proxy: nil,
168
+ record_har_content: nil,
169
+ record_har_mode: nil,
147
170
  record_har_omit_content: nil,
148
171
  record_har_path: nil,
172
+ record_har_url_filter: nil,
149
173
  record_video_dir: nil,
150
174
  record_video_size: nil,
151
175
  reducedMotion: nil,
152
176
  screen: nil,
177
+ serviceWorkers: nil,
153
178
  storageState: nil,
154
179
  strictSelectors: nil,
155
180
  timezoneId: nil,
@@ -23,7 +23,7 @@ page = context.new_page
23
23
  page.goto("https://example.com")
24
24
 
25
25
  # dispose context once it is no longer needed.
26
- context.close()
26
+ context.close
27
27
  ```
28
28
 
29
29
 
@@ -161,7 +161,7 @@ page.content = <<~HTML
161
161
  <div></div>
162
162
  HTML
163
163
 
164
- page.click("button")
164
+ page.locator("button").click
165
165
  ```
166
166
 
167
167
  An example of passing an element handle:
@@ -184,7 +184,7 @@ page.content = <<~HTML
184
184
  <div>Or click me</div>
185
185
  HTML
186
186
 
187
- page.click('div')
187
+ page.locator('div').first.click
188
188
  ```
189
189
 
190
190
 
@@ -222,7 +222,7 @@ page.content = <<~HTML
222
222
  <button onclick="onClick()">Click me</button>
223
223
  <div></div>
224
224
  HTML
225
- page.click("button")
225
+ page.locator("button").click
226
226
  ```
227
227
 
228
228
 
@@ -271,9 +271,9 @@ def route(url, handler, times: nil)
271
271
  Routing provides the capability to modify network requests that are made by any page in the browser context. Once route
272
272
  is enabled, every request matching the url pattern will stall unless it's continued, fulfilled or aborted.
273
273
 
274
- > NOTE: [Page#route](./page#route) will not intercept requests intercepted by Service Worker. See
274
+ > NOTE: [BrowserContext#route](./browser_context#route) will not intercept requests intercepted by Service Worker. See
275
275
  [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using
276
- request interception. Via `await context.addInitScript(() => delete window.navigator.serviceWorker);`
276
+ request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
277
277
 
278
278
  An example of a naive handler that aborts all image requests:
279
279
 
@@ -315,6 +315,19 @@ To remove a route with its handler you can use [BrowserContext#unroute](./browse
315
315
 
316
316
  > NOTE: Enabling routing disables http cache.
317
317
 
318
+ ## route_from_har
319
+
320
+ ```
321
+ def route_from_har(har, notFound: nil, update: nil, url: nil)
322
+ ```
323
+
324
+ If specified the network requests that are made in the context will be served from the HAR file. Read more about
325
+ [Replaying from HAR](https://playwright.dev/python/docs/network).
326
+
327
+ Playwright will not serve requests intercepted by Service Worker from the HAR file. See
328
+ [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using
329
+ request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
330
+
318
331
  ## service_workers
319
332
 
320
333
  ```
@@ -421,7 +434,7 @@ value. Will throw an error if the context closes before the event is fired. Retu
421
434
 
422
435
  ```ruby
423
436
  new_page = browser_context.expect_event('page') do
424
- page.click('button')
437
+ page.locator('button').click
425
438
  end
426
439
  ```
427
440
 
@@ -131,12 +131,16 @@ def launch_persistent_context(
131
131
  offline: nil,
132
132
  permissions: nil,
133
133
  proxy: nil,
134
+ record_har_content: nil,
135
+ record_har_mode: nil,
134
136
  record_har_omit_content: nil,
135
137
  record_har_path: nil,
138
+ record_har_url_filter: nil,
136
139
  record_video_dir: nil,
137
140
  record_video_size: nil,
138
141
  reducedMotion: nil,
139
142
  screen: nil,
143
+ serviceWorkers: nil,
140
144
  slowMo: nil,
141
145
  strictSelectors: nil,
142
146
  timeout: nil,
@@ -12,7 +12,7 @@ Download event is emitted once the download starts. Download path becomes availa
12
12
 
13
13
  ```ruby
14
14
  download = page.expect_download do
15
- page.click('a')
15
+ page.locator('a').click
16
16
  end
17
17
 
18
18
  # wait for download to complete
@@ -55,7 +55,7 @@ def bounding_box
55
55
  This method returns the bounding box of the element, or `null` if the element is not visible. The bounding box is
56
56
  calculated relative to the main frame viewport - which is usually the same as the browser window.
57
57
 
58
- Scrolling affects the returned bonding box, similarly to
58
+ Scrolling affects the returned bounding box, similarly to
59
59
  [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). That
60
60
  means `x` and/or `y` may be negative.
61
61
 
@@ -330,7 +330,10 @@ Returns the `element.innerText`.
330
330
  def input_value(timeout: nil)
331
331
  ```
332
332
 
333
- Returns `input.value` for `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
333
+ Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
334
+
335
+ Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
336
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
334
337
 
335
338
  ## checked?
336
339
 
@@ -446,11 +449,15 @@ def screenshot(
446
449
  type: nil)
447
450
  ```
448
451
 
449
- Returns the buffer with the captured screenshot.
452
+ This method captures a screenshot of the page, clipped to the size and position of this particular element. If the
453
+ element is covered by other elements, it will not be actually visible on the screenshot. If the element is a scrollable
454
+ container, only the currently scrolled content will be visible on the screenshot.
450
455
 
451
456
  This method waits for the [actionability](https://playwright.dev/python/docs/actionability) checks, then scrolls element into view before taking a
452
457
  screenshot. If the element is detached from DOM, the method throws an error.
453
458
 
459
+ Returns the buffer with the captured screenshot.
460
+
454
461
  ## scroll_into_view_if_needed
455
462
 
456
463
  ```
@@ -497,11 +504,6 @@ element_handle.select_option(label: "blue")
497
504
  element_handle.select_option(value: ["red", "green", "blue"])
498
505
  ```
499
506
 
500
- ```ruby
501
- # multiple selection for blue, red and second option
502
- element_handle.select_option(value: "blue", index: 2, label: "red")
503
- ```
504
-
505
507
 
506
508
 
507
509
  ## select_text
@@ -513,6 +515,10 @@ def select_text(force: nil, timeout: nil)
513
515
  This method waits for [actionability](https://playwright.dev/python/docs/actionability) checks, then focuses the element and selects all its text
514
516
  content.
515
517
 
518
+ If the element is inside the `<label>` element that has an associated
519
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in the
520
+ control instead.
521
+
516
522
  ## set_checked
517
523
 
518
524
  ```
@@ -546,11 +552,13 @@ def set_input_files(files, noWaitAfter: nil, timeout: nil)
546
552
  ```
547
553
  alias: `input_files=`
548
554
 
549
- This method expects `elementHandle` to point to an
550
- [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
551
-
552
555
  Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
553
- are resolved relative to the the current working directory. For empty array, clears the selected files.
556
+ are resolved relative to the current working directory. For empty array, clears the selected files.
557
+
558
+ This method expects [ElementHandle](./element_handle) to point to an
559
+ [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
560
+ `<label>` element that has an associated
561
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
554
562
 
555
563
  ## tap_point
556
564
 
@@ -33,7 +33,7 @@ PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 npm i -D playwright
33
33
  ## devices
34
34
 
35
35
  ```
36
- def devices(omitDriverInstall: nil, port: nil)
36
+ def devices(host: nil, omitDriverInstall: nil, port: nil)
37
37
  ```
38
38
 
39
39
  Returns the list of detected Android devices.
@@ -45,12 +45,16 @@ def launch_browser(
45
45
  noViewport: nil,
46
46
  offline: nil,
47
47
  permissions: nil,
48
+ record_har_content: nil,
49
+ record_har_mode: nil,
48
50
  record_har_omit_content: nil,
49
51
  record_har_path: nil,
52
+ record_har_url_filter: nil,
50
53
  record_video_dir: nil,
51
54
  record_video_size: nil,
52
55
  reducedMotion: nil,
53
56
  screen: nil,
57
+ serviceWorkers: nil,
54
58
  strictSelectors: nil,
55
59
  timezoneId: nil,
56
60
  userAgent: nil,
@@ -8,7 +8,7 @@ sidebar_position: 10
8
8
 
9
9
  ```ruby
10
10
  file_chooser = page.expect_file_chooser do
11
- page.click("upload") # action to trigger file uploading
11
+ page.locator("upload").click # action to trigger file uploading
12
12
  end
13
13
  file_chooser.set_files("myfile.pdf")
14
14
  ```
@@ -47,4 +47,4 @@ def set_files(files, noWaitAfter: nil, timeout: nil)
47
47
  alias: `files=`
48
48
 
49
49
  Sets the value of the file input this chooser is associated with. If some of the `filePaths` are relative paths, then
50
- they are resolved relative to the the current working directory. For empty array, clears the selected files.
50
+ they are resolved relative to the current working directory. For empty array, clears the selected files.
@@ -486,7 +486,10 @@ Returns `element.innerText`.
486
486
  def input_value(selector, strict: nil, timeout: nil)
487
487
  ```
488
488
 
489
- Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
489
+ Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
490
+
491
+ Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
492
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
490
493
 
491
494
  ## checked?
492
495
 
@@ -556,6 +559,8 @@ The method returns an element locator that can be used to perform actions in the
556
559
  element immediately before performing an action, so a series of actions on the same locator can in fact be performed on
557
560
  different DOM elements. That would happen if the DOM structure between those actions has changed.
558
561
 
562
+ [Learn more about locators](https://playwright.dev/python/docs/locators).
563
+
559
564
  ## name
560
565
 
561
566
  ```
@@ -724,11 +729,13 @@ def set_input_files(
724
729
  timeout: nil)
725
730
  ```
726
731
 
727
- This method expects `selector` to point to an
728
- [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
729
-
730
732
  Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
731
- are resolved relative to the the current working directory. For empty array, clears the selected files.
733
+ are resolved relative to the current working directory. For empty array, clears the selected files.
734
+
735
+ This method expects `selector` to point to an
736
+ [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
737
+ `<label>` element that has an associated
738
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
732
739
 
733
740
  ## tap_point
734
741
 
@@ -34,7 +34,7 @@ def bounding_box(timeout: nil)
34
34
  This method returns the bounding box of the element, or `null` if the element is not visible. The bounding box is
35
35
  calculated relative to the main frame viewport - which is usually the same as the browser window.
36
36
 
37
- Scrolling affects the returned bonding box, similarly to
37
+ Scrolling affects the returned bounding box, similarly to
38
38
  [Element.getBoundingClientRect](https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). That
39
39
  means `x` and/or `y` may be negative.
40
40
 
@@ -285,6 +285,26 @@ instead.
285
285
 
286
286
  To send fine-grained keyboard events, use [Locator#type](./locator#type).
287
287
 
288
+ ## filter
289
+
290
+ ```
291
+ def filter(has: nil, hasText: nil)
292
+ ```
293
+
294
+ This method narrows existing locator according to the options, for example filters by text. It can be chained to filter
295
+ multiple times.
296
+
297
+ ```ruby
298
+ row_locator = page.locator("tr")
299
+ # ...
300
+ row_locator.
301
+ filter(has_text="text in column 1").
302
+ filter(has=page.locator("tr", has_text="column 2 button")).
303
+ screenshot
304
+ ```
305
+
306
+
307
+
288
308
  ## first
289
309
 
290
310
  ```
@@ -322,6 +342,7 @@ locator.click
322
342
  ```
323
343
  def get_attribute(name, timeout: nil)
324
344
  ```
345
+ alias: `[]`
325
346
 
326
347
  Returns element attribute value.
327
348
 
@@ -378,7 +399,10 @@ Returns the `element.innerText`.
378
399
  def input_value(timeout: nil)
379
400
  ```
380
401
 
381
- Returns `input.value` for `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
402
+ Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
403
+
404
+ Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
405
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
382
406
 
383
407
  ## checked?
384
408
 
@@ -442,7 +466,8 @@ Returns locator to the last matching element.
442
466
  def locator(selector, has: nil, hasText: nil)
443
467
  ```
444
468
 
445
- The method finds an element matching the specified selector in the [Locator](./locator)'s subtree.
469
+ The method finds an element matching the specified selector in the [Locator](./locator)'s subtree. It also accepts filter options,
470
+ similar to [Locator#filter](./locator#filter) method.
446
471
 
447
472
  ## nth
448
473
 
@@ -500,11 +525,15 @@ def screenshot(
500
525
  type: nil)
501
526
  ```
502
527
 
503
- Returns the buffer with the captured screenshot.
528
+ This method captures a screenshot of the page, clipped to the size and position of a particular element matching the
529
+ locator. If the element is covered by other elements, it will not be actually visible on the screenshot. If the element
530
+ is a scrollable container, only the currently scrolled content will be visible on the screenshot.
504
531
 
505
532
  This method waits for the [actionability](https://playwright.dev/python/docs/actionability) checks, then scrolls element into view before taking a
506
533
  screenshot. If the element is detached from DOM, the method throws an error.
507
534
 
535
+ Returns the buffer with the captured screenshot.
536
+
508
537
  ## scroll_into_view_if_needed
509
538
 
510
539
  ```
@@ -548,11 +577,6 @@ element.select_option(label: "blue")
548
577
  element.select_option(value: ["red", "green", "blue"])
549
578
  ```
550
579
 
551
- ```ruby
552
- # multiple selection for blue, red and second option
553
- element.select_option(value: "blue", index: 2, label: "red")
554
- ```
555
-
556
580
 
557
581
 
558
582
  ## select_text
@@ -564,6 +588,10 @@ def select_text(force: nil, timeout: nil)
564
588
  This method waits for [actionability](https://playwright.dev/python/docs/actionability) checks, then focuses the element and selects all its text
565
589
  content.
566
590
 
591
+ If the element is inside the `<label>` element that has an associated
592
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in the
593
+ control instead.
594
+
567
595
  ## set_checked
568
596
 
569
597
  ```
@@ -597,11 +625,13 @@ def set_input_files(files, noWaitAfter: nil, timeout: nil)
597
625
  ```
598
626
  alias: `input_files=`
599
627
 
600
- This method expects `element` to point to an
601
- [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
602
-
603
628
  Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
604
- are resolved relative to the the current working directory. For empty array, clears the selected files.
629
+ are resolved relative to the current working directory. For empty array, clears the selected files.
630
+
631
+ This method expects [Locator](./locator) to point to an
632
+ [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
633
+ `<label>` element that has an associated
634
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
605
635
 
606
636
  ## tap_point
607
637
 
@@ -462,7 +462,7 @@ page.content = <<~HTML
462
462
  <button onclick="onClick()">Click me</button>
463
463
  <div></div>
464
464
  HTML
465
- page.click("button")
465
+ page.locator("button").click
466
466
  ```
467
467
 
468
468
  An example of passing an element handle:
@@ -483,7 +483,7 @@ page.content = <<~HTML
483
483
  <div>Or click me</div>
484
484
  HTML
485
485
 
486
- page.click('div')
486
+ page.locator('div').first.click
487
487
  ```
488
488
 
489
489
 
@@ -522,7 +522,7 @@ page.content = <<~HTML
522
522
  <button onclick="onClick()">Click me</button>
523
523
  <div></div>
524
524
  HTML
525
- page.click("button")
525
+ page.locator("button").click
526
526
  ```
527
527
 
528
528
 
@@ -642,8 +642,8 @@ Navigate to the next page in history.
642
642
  def goto(url, referer: nil, timeout: nil, waitUntil: nil)
643
643
  ```
644
644
 
645
- Returns the main resource response. In case of multiple redirects, the navigation will resolve with the response of the
646
- last redirect.
645
+ Returns the main resource response. In case of multiple redirects, the navigation will resolve with the first
646
+ non-redirect response.
647
647
 
648
648
  The method will throw an error if:
649
649
  - there's an SSL error (e.g. in case of self-signed certificates).
@@ -711,7 +711,10 @@ Returns `element.innerText`.
711
711
  def input_value(selector, strict: nil, timeout: nil)
712
712
  ```
713
713
 
714
- Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
714
+ Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
715
+
716
+ Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
717
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
715
718
 
716
719
  ## checked?
717
720
 
@@ -781,6 +784,8 @@ The method returns an element locator that can be used to perform actions on the
781
784
  element immediately before performing an action, so a series of actions on the same locator can in fact be performed on
782
785
  different DOM elements. That would happen if the DOM structure between those actions has changed.
783
786
 
787
+ [Learn more about locators](https://playwright.dev/python/docs/locators).
788
+
784
789
  Shortcut for main frame's [Frame#locator](./frame#locator).
785
790
 
786
791
  ## main_frame
@@ -970,7 +975,7 @@ Once routing is enabled, every request matching the url pattern will stall unles
970
975
  > NOTE: The handler will only be called for the first url if the response is a redirect.
971
976
  > NOTE: [Page#route](./page#route) will not intercept requests intercepted by Service Worker. See
972
977
  [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using
973
- request interception. Via `await context.addInitScript(() => delete window.navigator.serviceWorker);`
978
+ request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
974
979
 
975
980
  An example of a naive handler that aborts all image requests:
976
981
 
@@ -1008,6 +1013,19 @@ To remove a route with its handler you can use [Page#unroute](./page#unroute).
1008
1013
 
1009
1014
  > NOTE: Enabling routing disables http cache.
1010
1015
 
1016
+ ## route_from_har
1017
+
1018
+ ```
1019
+ def route_from_har(har, notFound: nil, update: nil, url: nil)
1020
+ ```
1021
+
1022
+ If specified the network requests that are made in the page will be served from the HAR file. Read more about
1023
+ [Replaying from HAR](https://playwright.dev/python/docs/network).
1024
+
1025
+ Playwright will not serve requests intercepted by Service Worker from the HAR file. See
1026
+ [this](https://github.com/microsoft/playwright/issues/1090) issue. We recommend disabling Service Workers when using
1027
+ request interception by setting `Browser.newContext.serviceWorkers` to `'block'`.
1028
+
1011
1029
  ## screenshot
1012
1030
 
1013
1031
  ```
@@ -1155,11 +1173,13 @@ def set_input_files(
1155
1173
  timeout: nil)
1156
1174
  ```
1157
1175
 
1158
- This method expects `selector` to point to an
1159
- [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
1160
-
1161
1176
  Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
1162
- are resolved relative to the the current working directory. For empty array, clears the selected files.
1177
+ are resolved relative to the current working directory. For empty array, clears the selected files.
1178
+
1179
+ This method expects `selector` to point to an
1180
+ [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
1181
+ `<label>` element that has an associated
1182
+ [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
1163
1183
 
1164
1184
  ## set_viewport_size
1165
1185
 
@@ -56,7 +56,9 @@ Returns the [Frame](./frame) that initiated this request.
56
56
  def headers
57
57
  ```
58
58
 
59
- **DEPRECATED** Incomplete list of headers as seen by the rendering engine. Use [Request#all_headers](./request#all_headers) instead.
59
+ An object with the request HTTP headers. The header names are lower-cased. Note that this method does not return
60
+ security-related headers, including cookie-related ones. You can use [Request#all_headers](./request#all_headers) for complete list of
61
+ headers that include `cookie` information.
60
62
 
61
63
  ## headers_array
62
64
 
@@ -38,13 +38,24 @@ def frame
38
38
 
39
39
  Returns the [Frame](./frame) that initiated this response.
40
40
 
41
+ ## from_service_worker
42
+
43
+ ```
44
+ def from_service_worker
45
+ ```
46
+
47
+ Indicates whether this Response was fullfilled by a Service Worker's Fetch Handler (i.e. via
48
+ [FetchEvent.respondWith](https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent/respondWith)).
49
+
41
50
  ## headers
42
51
 
43
52
  ```
44
53
  def headers
45
54
  ```
46
55
 
47
- **DEPRECATED** Incomplete list of headers as seen by the rendering engine. Use [Response#all_headers](./response#all_headers) instead.
56
+ An object with the response HTTP headers. The header names are lower-cased. Note that this method does not return
57
+ security-related headers, including cookie-related ones. You can use [Response#all_headers](./response#all_headers) for complete list
58
+ of headers that include `cookie` information.
48
59
 
49
60
  ## headers_array
50
61