playwright-ruby-client 1.20.1 → 1.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/documentation/docs/api/api_request_context.md +15 -2
  3. data/documentation/docs/api/browser_type.md +1 -1
  4. data/documentation/docs/api/console_message.md +27 -1
  5. data/documentation/docs/api/element_handle.md +23 -8
  6. data/documentation/docs/api/experimental/android.md +1 -1
  7. data/documentation/docs/api/file_chooser.md +1 -1
  8. data/documentation/docs/api/frame.md +12 -5
  9. data/documentation/docs/api/frame_locator.md +1 -1
  10. data/documentation/docs/api/locator.md +32 -8
  11. data/documentation/docs/api/page.md +18 -8
  12. data/documentation/docs/api/route.md +2 -0
  13. data/documentation/docs/include/api_coverage.md +1 -0
  14. data/documentation/package.json +6 -6
  15. data/documentation/yarn.lock +2931 -3220
  16. data/lib/playwright/channel_owners/android.rb +2 -1
  17. data/lib/playwright/channel_owners/android_device.rb +0 -4
  18. data/lib/playwright/channel_owners/browser_context.rb +10 -2
  19. data/lib/playwright/channel_owners/element_handle.rb +12 -3
  20. data/lib/playwright/channel_owners/frame.rb +4 -5
  21. data/lib/playwright/channel_owners/page.rb +12 -8
  22. data/lib/playwright/channel_owners/writable_stream.rb +14 -0
  23. data/lib/playwright/input_files.rb +60 -8
  24. data/lib/playwright/javascript/value_parser.rb +30 -17
  25. data/lib/playwright/javascript/value_serializer.rb +13 -2
  26. data/lib/playwright/javascript/visitor_info.rb +26 -0
  27. data/lib/playwright/locator_impl.rb +15 -0
  28. data/lib/playwright/playwright_api.rb +26 -6
  29. data/lib/playwright/transport.rb +12 -3
  30. data/lib/playwright/version.rb +2 -2
  31. data/lib/playwright_api/accessibility.rb +2 -1
  32. data/lib/playwright_api/android.rb +2 -2
  33. data/lib/playwright_api/android_device.rb +0 -5
  34. data/lib/playwright_api/api_request.rb +3 -3
  35. data/lib/playwright_api/api_request_context.rb +15 -2
  36. data/lib/playwright_api/browser_context.rb +5 -5
  37. data/lib/playwright_api/browser_type.rb +2 -2
  38. data/lib/playwright_api/console_message.rb +20 -1
  39. data/lib/playwright_api/element_handle.rb +53 -38
  40. data/lib/playwright_api/file_chooser.rb +1 -1
  41. data/lib/playwright_api/frame.rb +30 -23
  42. data/lib/playwright_api/frame_locator.rb +1 -1
  43. data/lib/playwright_api/locator.rb +48 -27
  44. data/lib/playwright_api/page.rb +39 -29
  45. data/lib/playwright_api/playwright.rb +1 -1
  46. data/lib/playwright_api/route.rb +2 -0
  47. data/lib/playwright_api/selectors.rb +1 -1
  48. data/lib/playwright_api/tracing.rb +1 -1
  49. data/lib/playwright_api/worker.rb +4 -4
  50. metadata +5 -3
@@ -66,7 +66,7 @@ module Playwright
66
66
  # This method checks the element by performing the following steps:
67
67
  # 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already checked,
68
68
  # this method returns immediately.
69
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
69
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
70
70
  # 1. Scroll the element into view if needed.
71
71
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
72
72
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -86,7 +86,7 @@ module Playwright
86
86
  end
87
87
 
88
88
  # This method clicks the element by performing the following steps:
89
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
89
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
90
90
  # 1. Scroll the element into view if needed.
91
91
  # 1. Use [`property: Page.mouse`] to click in the center of the element, or the specified `position`.
92
92
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -114,7 +114,7 @@ module Playwright
114
114
  end
115
115
 
116
116
  # This method double clicks the element by performing the following steps:
117
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
117
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
118
118
  # 1. Scroll the element into view if needed.
119
119
  # 1. Use [`property: Page.mouse`] to double click in the center of the element, or the specified `position`.
120
120
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set. Note that if the
@@ -172,7 +172,7 @@ module Playwright
172
172
  # Returns the return value of `expression`.
173
173
  #
174
174
  # The method finds an element matching the specified selector in the `ElementHandle`s subtree and passes it as a first
175
- # argument to `expression`. See [Working with selectors](./selectors.md) for more details. If no elements match the
175
+ # argument to `expression`. See [Working with selectors](../selectors.md) for more details. If no elements match the
176
176
  # selector, the method throws an error.
177
177
  #
178
178
  # If `expression` returns a [Promise], then [`method: ElementHandle.evalOnSelector`] would wait for the promise to resolve
@@ -192,7 +192,7 @@ module Playwright
192
192
  # Returns the return value of `expression`.
193
193
  #
194
194
  # The method finds all elements matching the specified selector in the `ElementHandle`'s subtree and passes an array of
195
- # matched elements as a first argument to `expression`. See [Working with selectors](./selectors.md) for more details.
195
+ # matched elements as a first argument to `expression`. See [Working with selectors](../selectors.md) for more details.
196
196
  #
197
197
  # If `expression` returns a [Promise], then [`method: ElementHandle.evalOnSelectorAll`] would wait for the promise to
198
198
  # resolve and return its value.
@@ -214,7 +214,7 @@ module Playwright
214
214
  wrap_impl(@impl.eval_on_selector_all(unwrap_impl(selector), unwrap_impl(expression), arg: unwrap_impl(arg)))
215
215
  end
216
216
 
217
- # This method waits for [actionability](./actionability.md) checks, focuses the element, fills it and triggers an `input`
217
+ # This method waits for [actionability](../actionability.md) checks, focuses the element, fills it and triggers an `input`
218
218
  # event after filling. Note that you can pass an empty string to clear the input field.
219
219
  #
220
220
  # If the target element is not an `<input>`, `<textarea>` or `[contenteditable]` element, this method throws an error.
@@ -239,7 +239,7 @@ module Playwright
239
239
  alias_method :[], :get_attribute
240
240
 
241
241
  # This method hovers over the element by performing the following steps:
242
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
242
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
243
243
  # 1. Scroll the element into view if needed.
244
244
  # 1. Use [`property: Page.mouse`] to hover over the center of the element, or the specified `position`.
245
245
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -267,7 +267,10 @@ module Playwright
267
267
  wrap_impl(@impl.inner_text)
268
268
  end
269
269
 
270
- # Returns `input.value` for `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
270
+ # Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
271
+ #
272
+ # Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
273
+ # [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
271
274
  def input_value(timeout: nil)
272
275
  wrap_impl(@impl.input_value(timeout: unwrap_impl(timeout)))
273
276
  end
@@ -277,27 +280,27 @@ module Playwright
277
280
  wrap_impl(@impl.checked?)
278
281
  end
279
282
 
280
- # Returns whether the element is disabled, the opposite of [enabled](./actionability.md#enabled).
283
+ # Returns whether the element is disabled, the opposite of [enabled](../actionability.md#enabled).
281
284
  def disabled?
282
285
  wrap_impl(@impl.disabled?)
283
286
  end
284
287
 
285
- # Returns whether the element is [editable](./actionability.md#editable).
288
+ # Returns whether the element is [editable](../actionability.md#editable).
286
289
  def editable?
287
290
  wrap_impl(@impl.editable?)
288
291
  end
289
292
 
290
- # Returns whether the element is [enabled](./actionability.md#enabled).
293
+ # Returns whether the element is [enabled](../actionability.md#enabled).
291
294
  def enabled?
292
295
  wrap_impl(@impl.enabled?)
293
296
  end
294
297
 
295
- # Returns whether the element is hidden, the opposite of [visible](./actionability.md#visible).
298
+ # Returns whether the element is hidden, the opposite of [visible](../actionability.md#visible).
296
299
  def hidden?
297
300
  wrap_impl(@impl.hidden?)
298
301
  end
299
302
 
300
- # Returns whether the element is [visible](./actionability.md#visible).
303
+ # Returns whether the element is [visible](../actionability.md#visible).
301
304
  def visible?
302
305
  wrap_impl(@impl.visible?)
303
306
  end
@@ -330,33 +333,39 @@ module Playwright
330
333
  end
331
334
 
332
335
  # The method finds an element matching the specified selector in the `ElementHandle`'s subtree. See
333
- # [Working with selectors](./selectors.md) for more details. If no elements match the selector, returns `null`.
336
+ # [Working with selectors](../selectors.md) for more details. If no elements match the selector, returns `null`.
334
337
  def query_selector(selector)
335
338
  wrap_impl(@impl.query_selector(unwrap_impl(selector)))
336
339
  end
337
340
 
338
341
  # The method finds all elements matching the specified selector in the `ElementHandle`s subtree. See
339
- # [Working with selectors](./selectors.md) for more details. If no elements match the selector, returns empty array.
342
+ # [Working with selectors](../selectors.md) for more details. If no elements match the selector, returns empty array.
340
343
  def query_selector_all(selector)
341
344
  wrap_impl(@impl.query_selector_all(unwrap_impl(selector)))
342
345
  end
343
346
 
344
- # Returns the buffer with the captured screenshot.
347
+ # This method captures a screenshot of the page, clipped to the size and position of this particular element. If the
348
+ # element is covered by other elements, it will not be actually visible on the screenshot. If the element is a scrollable
349
+ # container, only the currently scrolled content will be visible on the screenshot.
345
350
  #
346
- # This method waits for the [actionability](./actionability.md) checks, then scrolls element into view before taking a
351
+ # This method waits for the [actionability](../actionability.md) checks, then scrolls element into view before taking a
347
352
  # screenshot. If the element is detached from DOM, the method throws an error.
353
+ #
354
+ # Returns the buffer with the captured screenshot.
348
355
  def screenshot(
349
356
  animations: nil,
357
+ caret: nil,
350
358
  mask: nil,
351
359
  omitBackground: nil,
352
360
  path: nil,
353
361
  quality: nil,
362
+ scale: nil,
354
363
  timeout: nil,
355
364
  type: nil)
356
- wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
365
+ wrap_impl(@impl.screenshot(animations: unwrap_impl(animations), caret: unwrap_impl(caret), mask: unwrap_impl(mask), omitBackground: unwrap_impl(omitBackground), path: unwrap_impl(path), quality: unwrap_impl(quality), scale: unwrap_impl(scale), timeout: unwrap_impl(timeout), type: unwrap_impl(type)))
357
366
  end
358
367
 
359
- # This method waits for [actionability](./actionability.md) checks, then tries to scroll element into view, unless it is
368
+ # This method waits for [actionability](../actionability.md) checks, then tries to scroll element into view, unless it is
360
369
  # completely visible as defined by
361
370
  # [IntersectionObserver](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)'s `ratio`.
362
371
  #
@@ -366,7 +375,7 @@ module Playwright
366
375
  wrap_impl(@impl.scroll_into_view_if_needed(timeout: unwrap_impl(timeout)))
367
376
  end
368
377
 
369
- # This method waits for [actionability](./actionability.md) checks, waits until all specified options are present in the
378
+ # This method waits for [actionability](../actionability.md) checks, waits until all specified options are present in the
370
379
  # `<select>` element and selects these options.
371
380
  #
372
381
  # If the target element is not a `<select>` element, this method throws an error. However, if the element is inside the
@@ -407,8 +416,12 @@ module Playwright
407
416
  wrap_impl(@impl.select_option(element: unwrap_impl(element), index: unwrap_impl(index), value: unwrap_impl(value), label: unwrap_impl(label), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
408
417
  end
409
418
 
410
- # This method waits for [actionability](./actionability.md) checks, then focuses the element and selects all its text
419
+ # This method waits for [actionability](../actionability.md) checks, then focuses the element and selects all its text
411
420
  # content.
421
+ #
422
+ # If the element is inside the `<label>` element that has an associated
423
+ # [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in the
424
+ # control instead.
412
425
  def select_text(force: nil, timeout: nil)
413
426
  wrap_impl(@impl.select_text(force: unwrap_impl(force), timeout: unwrap_impl(timeout)))
414
427
  end
@@ -416,7 +429,7 @@ module Playwright
416
429
  # This method checks or unchecks an element by performing the following steps:
417
430
  # 1. Ensure that element is a checkbox or a radio input. If not, this method throws.
418
431
  # 1. If the element already has the right checked state, this method returns immediately.
419
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
432
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
420
433
  # element is detached during the checks, the whole action is retried.
421
434
  # 1. Scroll the element into view if needed.
422
435
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -436,18 +449,20 @@ module Playwright
436
449
  end
437
450
  alias_method :checked=, :set_checked
438
451
 
439
- # This method expects `elementHandle` to point to an
440
- # [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
441
- #
442
452
  # Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
443
- # are resolved relative to the the current working directory. For empty array, clears the selected files.
453
+ # are resolved relative to the current working directory. For empty array, clears the selected files.
454
+ #
455
+ # This method expects `ElementHandle` to point to an
456
+ # [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
457
+ # `<label>` element that has an associated
458
+ # [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
444
459
  def set_input_files(files, noWaitAfter: nil, timeout: nil)
445
460
  wrap_impl(@impl.set_input_files(unwrap_impl(files), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
446
461
  end
447
462
  alias_method :input_files=, :set_input_files
448
463
 
449
464
  # This method taps the element by performing the following steps:
450
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
465
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
451
466
  # 1. Scroll the element into view if needed.
452
467
  # 1. Use [`property: Page.touchscreen`] to tap the center of the element, or the specified `position`.
453
468
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -496,7 +511,7 @@ module Playwright
496
511
  # This method checks the element by performing the following steps:
497
512
  # 1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already
498
513
  # unchecked, this method returns immediately.
499
- # 1. Wait for [actionability](./actionability.md) checks on the element, unless `force` option is set.
514
+ # 1. Wait for [actionability](../actionability.md) checks on the element, unless `force` option is set.
500
515
  # 1. Scroll the element into view if needed.
501
516
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
502
517
  # 1. Wait for initiated navigations to either succeed or fail, unless `noWaitAfter` option is set.
@@ -517,16 +532,16 @@ module Playwright
517
532
 
518
533
  # Returns when the element satisfies the `state`.
519
534
  #
520
- # Depending on the `state` parameter, this method waits for one of the [actionability](./actionability.md) checks to pass.
521
- # This method throws when the element is detached while waiting, unless waiting for the `"hidden"` state.
522
- # - `"visible"` Wait until the element is [visible](./actionability.md#visible).
523
- # - `"hidden"` Wait until the element is [not visible](./actionability.md#visible) or
524
- # [not attached](./actionability.md#attached). Note that waiting for hidden does not throw when the element detaches.
525
- # - `"stable"` Wait until the element is both [visible](./actionability.md#visible) and
526
- # [stable](./actionability.md#stable).
527
- # - `"enabled"` Wait until the element is [enabled](./actionability.md#enabled).
528
- # - `"disabled"` Wait until the element is [not enabled](./actionability.md#enabled).
529
- # - `"editable"` Wait until the element is [editable](./actionability.md#editable).
535
+ # Depending on the `state` parameter, this method waits for one of the [actionability](../actionability.md) checks to
536
+ # pass. This method throws when the element is detached while waiting, unless waiting for the `"hidden"` state.
537
+ # - `"visible"` Wait until the element is [visible](../actionability.md#visible).
538
+ # - `"hidden"` Wait until the element is [not visible](../actionability.md#visible) or
539
+ # [not attached](../actionability.md#attached). Note that waiting for hidden does not throw when the element detaches.
540
+ # - `"stable"` Wait until the element is both [visible](../actionability.md#visible) and
541
+ # [stable](../actionability.md#stable).
542
+ # - `"enabled"` Wait until the element is [enabled](../actionability.md#enabled).
543
+ # - `"disabled"` Wait until the element is [not enabled](../actionability.md#enabled).
544
+ # - `"editable"` Wait until the element is [editable](../actionability.md#editable).
530
545
  #
531
546
  # If the element does not satisfy the condition for the `timeout` milliseconds, this method will throw.
532
547
  def wait_for_element_state(state, timeout: nil)
@@ -25,7 +25,7 @@ module Playwright
25
25
  end
26
26
 
27
27
  # Sets the value of the file input this chooser is associated with. If some of the `filePaths` are relative paths, then
28
- # they are resolved relative to the the current working directory. For empty array, clears the selected files.
28
+ # they are resolved relative to the current working directory. For empty array, clears the selected files.
29
29
  def set_files(files, noWaitAfter: nil, timeout: nil)
30
30
  wrap_impl(@impl.set_files(unwrap_impl(files), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
31
31
  end
@@ -51,7 +51,7 @@ module Playwright
51
51
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
52
52
  # 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws. If the element is already
53
53
  # checked, this method returns immediately.
54
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
54
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
55
55
  # element is detached during the checks, the whole action is retried.
56
56
  # 1. Scroll the element into view if needed.
57
57
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -77,7 +77,7 @@ module Playwright
77
77
 
78
78
  # This method clicks an element matching `selector` by performing the following steps:
79
79
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
80
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
80
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
81
81
  # element is detached during the checks, the whole action is retried.
82
82
  # 1. Scroll the element into view if needed.
83
83
  # 1. Use [`property: Page.mouse`] to click in the center of the element, or the specified `position`.
@@ -107,7 +107,7 @@ module Playwright
107
107
 
108
108
  # This method double clicks an element matching `selector` by performing the following steps:
109
109
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
110
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
110
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
111
111
  # element is detached during the checks, the whole action is retried.
112
112
  # 1. Scroll the element into view if needed.
113
113
  # 1. Use [`property: Page.mouse`] to double click in the center of the element, or the specified `position`.
@@ -187,7 +187,7 @@ module Playwright
187
187
  # tests. Use [`method: Locator.evaluate`], other `Locator` helper methods or web-first assertions instead.
188
188
  #
189
189
  # The method finds an element matching the specified selector within the frame and passes it as a first argument to
190
- # `expression`. See [Working with selectors](./selectors.md) for more details. If no elements match the selector, the
190
+ # `expression`. See [Working with selectors](../selectors.md) for more details. If no elements match the selector, the
191
191
  # method throws an error.
192
192
  #
193
193
  # If `expression` returns a [Promise], then [`method: Frame.evalOnSelector`] would wait for the promise to resolve and
@@ -210,7 +210,7 @@ module Playwright
210
210
  # better job.
211
211
  #
212
212
  # The method finds all elements matching the specified selector within the frame and passes an array of matched elements
213
- # as a first argument to `expression`. See [Working with selectors](./selectors.md) for more details.
213
+ # as a first argument to `expression`. See [Working with selectors](../selectors.md) for more details.
214
214
  #
215
215
  # If `expression` returns a [Promise], then [`method: Frame.evalOnSelectorAll`] would wait for the promise to resolve and
216
216
  # return its value.
@@ -288,7 +288,7 @@ module Playwright
288
288
  wrap_impl(@impl.evaluate_handle(unwrap_impl(expression), arg: unwrap_impl(arg)))
289
289
  end
290
290
 
291
- # This method waits for an element matching `selector`, waits for [actionability](./actionability.md) checks, focuses the
291
+ # This method waits for an element matching `selector`, waits for [actionability](../actionability.md) checks, focuses the
292
292
  # element, fills it and triggers an `input` event after filling. Note that you can pass an empty string to clear the input
293
293
  # field.
294
294
  #
@@ -371,7 +371,7 @@ module Playwright
371
371
 
372
372
  # This method hovers over an element matching `selector` by performing the following steps:
373
373
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
374
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
374
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
375
375
  # element is detached during the checks, the whole action is retried.
376
376
  # 1. Scroll the element into view if needed.
377
377
  # 1. Use [`property: Page.mouse`] to hover over the center of the element, or the specified `position`.
@@ -400,7 +400,10 @@ module Playwright
400
400
  wrap_impl(@impl.inner_text(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
401
401
  end
402
402
 
403
- # Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element. Throws for non-input elements.
403
+ # Returns `input.value` for the selected `<input>` or `<textarea>` or `<select>` element.
404
+ #
405
+ # Throws for non-input elements. However, if the element is inside the `<label>` element that has an associated
406
+ # [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.
404
407
  def input_value(selector, strict: nil, timeout: nil)
405
408
  wrap_impl(@impl.input_value(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
406
409
  end
@@ -415,28 +418,28 @@ module Playwright
415
418
  wrap_impl(@impl.detached?)
416
419
  end
417
420
 
418
- # Returns whether the element is disabled, the opposite of [enabled](./actionability.md#enabled).
421
+ # Returns whether the element is disabled, the opposite of [enabled](../actionability.md#enabled).
419
422
  def disabled?(selector, strict: nil, timeout: nil)
420
423
  wrap_impl(@impl.disabled?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
421
424
  end
422
425
 
423
- # Returns whether the element is [editable](./actionability.md#editable).
426
+ # Returns whether the element is [editable](../actionability.md#editable).
424
427
  def editable?(selector, strict: nil, timeout: nil)
425
428
  wrap_impl(@impl.editable?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
426
429
  end
427
430
 
428
- # Returns whether the element is [enabled](./actionability.md#enabled).
431
+ # Returns whether the element is [enabled](../actionability.md#enabled).
429
432
  def enabled?(selector, strict: nil, timeout: nil)
430
433
  wrap_impl(@impl.enabled?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
431
434
  end
432
435
 
433
- # Returns whether the element is hidden, the opposite of [visible](./actionability.md#visible). `selector` that does not
436
+ # Returns whether the element is hidden, the opposite of [visible](../actionability.md#visible). `selector` that does not
434
437
  # match any elements is considered hidden.
435
438
  def hidden?(selector, strict: nil, timeout: nil)
436
439
  wrap_impl(@impl.hidden?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
437
440
  end
438
441
 
439
- # Returns whether the element is [visible](./actionability.md#visible). `selector` that does not match any elements is
442
+ # Returns whether the element is [visible](../actionability.md#visible). `selector` that does not match any elements is
440
443
  # considered not visible.
441
444
  def visible?(selector, strict: nil, timeout: nil)
442
445
  wrap_impl(@impl.visible?(unwrap_impl(selector), strict: unwrap_impl(strict), timeout: unwrap_impl(timeout)))
@@ -445,6 +448,8 @@ module Playwright
445
448
  # The method returns an element locator that can be used to perform actions in the frame. Locator is resolved to the
446
449
  # element immediately before performing an action, so a series of actions on the same locator can in fact be performed on
447
450
  # different DOM elements. That would happen if the DOM structure between those actions has changed.
451
+ #
452
+ # [Learn more about locators](../locators.md).
448
453
  def locator(selector, has: nil, hasText: nil)
449
454
  wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
450
455
  end
@@ -499,7 +504,7 @@ module Playwright
499
504
  # > NOTE: The use of `ElementHandle` is discouraged, use `Locator` objects and web-first assertions instead.
500
505
  #
501
506
  # The method finds an element matching the specified selector within the frame. See
502
- # [Working with selectors](./selectors.md) for more details. If no elements match the selector, returns `null`.
507
+ # [Working with selectors](../selectors.md) for more details. If no elements match the selector, returns `null`.
503
508
  def query_selector(selector, strict: nil)
504
509
  wrap_impl(@impl.query_selector(unwrap_impl(selector), strict: unwrap_impl(strict)))
505
510
  end
@@ -509,12 +514,12 @@ module Playwright
509
514
  # > NOTE: The use of `ElementHandle` is discouraged, use `Locator` objects instead.
510
515
  #
511
516
  # The method finds all elements matching the specified selector within the frame. See
512
- # [Working with selectors](./selectors.md) for more details. If no elements match the selector, returns empty array.
517
+ # [Working with selectors](../selectors.md) for more details. If no elements match the selector, returns empty array.
513
518
  def query_selector_all(selector)
514
519
  wrap_impl(@impl.query_selector_all(unwrap_impl(selector)))
515
520
  end
516
521
 
517
- # This method waits for an element matching `selector`, waits for [actionability](./actionability.md) checks, waits until
522
+ # This method waits for an element matching `selector`, waits for [actionability](../actionability.md) checks, waits until
518
523
  # all specified options are present in the `<select>` element and selects these options.
519
524
  #
520
525
  # If the target element is not a `<select>` element, this method throws an error. However, if the element is inside the
@@ -550,7 +555,7 @@ module Playwright
550
555
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
551
556
  # 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws.
552
557
  # 1. If the element already has the right checked state, this method returns immediately.
553
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
558
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
554
559
  # element is detached during the checks, the whole action is retried.
555
560
  # 1. Scroll the element into view if needed.
556
561
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -576,11 +581,13 @@ module Playwright
576
581
  end
577
582
  alias_method :content=, :set_content
578
583
 
579
- # This method expects `selector` to point to an
580
- # [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input).
581
- #
582
584
  # Sets the value of the file input to these file paths or files. If some of the `filePaths` are relative paths, then they
583
- # are resolved relative to the the current working directory. For empty array, clears the selected files.
585
+ # are resolved relative to the current working directory. For empty array, clears the selected files.
586
+ #
587
+ # This method expects `selector` to point to an
588
+ # [input element](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the
589
+ # `<label>` element that has an associated
590
+ # [control](https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.
584
591
  def set_input_files(
585
592
  selector,
586
593
  files,
@@ -592,7 +599,7 @@ module Playwright
592
599
 
593
600
  # This method taps an element matching `selector` by performing the following steps:
594
601
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
595
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
602
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
596
603
  # element is detached during the checks, the whole action is retried.
597
604
  # 1. Scroll the element into view if needed.
598
605
  # 1. Use [`property: Page.touchscreen`] to tap the center of the element, or the specified `position`.
@@ -647,7 +654,7 @@ module Playwright
647
654
  # 1. Find an element matching `selector`. If there is none, wait until a matching element is attached to the DOM.
648
655
  # 1. Ensure that matched element is a checkbox or a radio input. If not, this method throws. If the element is already
649
656
  # unchecked, this method returns immediately.
650
- # 1. Wait for [actionability](./actionability.md) checks on the matched element, unless `force` option is set. If the
657
+ # 1. Wait for [actionability](../actionability.md) checks on the matched element, unless `force` option is set. If the
651
658
  # element is detached during the checks, the whole action is retried.
652
659
  # 1. Scroll the element into view if needed.
653
660
  # 1. Use [`property: Page.mouse`] to click in the center of the element.
@@ -52,7 +52,7 @@ module Playwright
52
52
  wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
53
53
  end
54
54
 
55
- # Returns locator to the n-th matching frame.
55
+ # Returns locator to the n-th matching frame. It's zero based, `nth(0)` selects the first frame.
56
56
  def nth(index)
57
57
  wrap_impl(@impl.nth(unwrap_impl(index)))
58
58
  end