Class: Playwright::Locator

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

Overview

Locators are the central piece of Playwright’s auto-waiting and retry-ability. In a nutshell, locators represent a way to find element(s) on the page at any moment. Locator can be created with the [‘method: Page.locator`] method.

[Learn more about locators](../locators.md).

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_inner_textsObject

Returns an array of ‘node.innerText` values for all matching nodes.



9
10
11
# File 'lib/playwright_api/locator.rb', line 9

def all_inner_texts
  wrap_impl(@impl.all_inner_texts)
end

#all_text_contentsObject

Returns an array of ‘node.textContent` values for all matching nodes.



14
15
16
# File 'lib/playwright_api/locator.rb', line 14

def all_text_contents
  wrap_impl(@impl.all_text_contents)
end

#bounding_box(timeout: nil) ⇒ Object

This method returns the bounding box of the element, or ‘null` if the element is not visible. The bounding box is calculated relative to the main frame viewport - which is usually the same as the browser window.

Scrolling affects the returned bounding box, similarly to [Element.getBoundingClientRect](developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect). That means ‘x` and/or `y` may be negative.

Elements from child frames return the bounding box relative to the main frame, unlike the [Element.getBoundingClientRect](developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect).

Assuming the page is static, it is safe to use bounding box coordinates to perform input. For example, the following snippet should click the center of the element.

“‘python sync box = element.bounding_box() page.mouse.click(box + box / 2, box + box / 2) “`



35
36
37
# File 'lib/playwright_api/locator.rb', line 35

def bounding_box(timeout: nil)
  wrap_impl(@impl.bounding_box(timeout: unwrap_impl(timeout)))
end

#check(force: nil, noWaitAfter: nil, position: nil, timeout: nil, trial: nil) ⇒ Object

This method checks the element by performing the following steps:

  1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already checked, this method returns immediately.

  2. Wait for [actionability](../actionability.md) checks on the element, unless ‘force` option is set.

  3. Scroll the element into view if needed.

  4. Use [‘property: Page.mouse`] to click in the center of the element.

  5. Wait for initiated navigations to either succeed or fail, unless ‘noWaitAfter` option is set.

  6. Ensure that the element is now checked. If not, this method throws.

If the element is detached from the DOM at any moment during the action, this method throws.

When all steps combined have not finished during the specified ‘timeout`, this method throws a `TimeoutError`. Passing zero timeout disables this.



52
53
54
55
56
57
58
59
# File 'lib/playwright_api/locator.rb', line 52

def check(
      force: nil,
      noWaitAfter: nil,
      position: nil,
      timeout: nil,
      trial: nil)
  wrap_impl(@impl.check(force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), position: unwrap_impl(position), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
end

#checked?(timeout: nil) ⇒ Boolean

Returns whether the element is checked. Throws if the element is not a checkbox or radio input.

Returns:

  • (Boolean)


400
401
402
# File 'lib/playwright_api/locator.rb', line 400

def checked?(timeout: nil)
  wrap_impl(@impl.checked?(timeout: unwrap_impl(timeout)))
end

#click(button: nil, clickCount: nil, delay: nil, force: nil, modifiers: nil, noWaitAfter: nil, position: nil, timeout: nil, trial: nil) ⇒ Object

This method clicks the element by performing the following steps:

  1. Wait for [actionability](../actionability.md) checks on the element, unless ‘force` option is set.

  2. Scroll the element into view if needed.

  3. Use [‘property: Page.mouse`] to click in the center of the element, or the specified `position`.

  4. Wait for initiated navigations to either succeed or fail, unless ‘noWaitAfter` option is set.

If the element is detached from the DOM at any moment during the action, this method throws.

When all steps combined have not finished during the specified ‘timeout`, this method throws a `TimeoutError`. Passing zero timeout disables this.



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/playwright_api/locator.rb', line 71

def click(
      button: nil,
      clickCount: nil,
      delay: nil,
      force: nil,
      modifiers: nil,
      noWaitAfter: nil,
      position: nil,
      timeout: nil,
      trial: nil)
  wrap_impl(@impl.click(button: unwrap_impl(button), clickCount: unwrap_impl(clickCount), delay: unwrap_impl(delay), force: unwrap_impl(force), modifiers: unwrap_impl(modifiers), noWaitAfter: unwrap_impl(noWaitAfter), position: unwrap_impl(position), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
end

#countObject

Returns the number of elements matching given selector.



85
86
87
# File 'lib/playwright_api/locator.rb', line 85

def count
  wrap_impl(@impl.count)
end

#dblclick(button: nil, delay: nil, force: nil, modifiers: nil, noWaitAfter: nil, position: nil, timeout: nil, trial: nil) ⇒ Object

This method double clicks the element by performing the following steps:

  1. Wait for [actionability](../actionability.md) checks on the element, unless ‘force` option is set.

  2. Scroll the element into view if needed.

  3. Use [‘property: Page.mouse`] to double click in the center of the element, or the specified `position`.

  4. Wait for initiated navigations to either succeed or fail, unless ‘noWaitAfter` option is set. Note that if the first click of the `dblclick()` triggers a navigation event, this method will throw.

If the element is detached from the DOM at any moment during the action, this method throws.

When all steps combined have not finished during the specified ‘timeout`, this method throws a `TimeoutError`. Passing zero timeout disables this.

> NOTE: ‘element.dblclick()` dispatches two `click` events and a single `dblclick` event.



102
103
104
105
106
107
108
109
110
111
112
# File 'lib/playwright_api/locator.rb', line 102

def dblclick(
      button: nil,
      delay: nil,
      force: nil,
      modifiers: nil,
      noWaitAfter: nil,
      position: nil,
      timeout: nil,
      trial: nil)
  wrap_impl(@impl.dblclick(button: unwrap_impl(button), delay: unwrap_impl(delay), force: unwrap_impl(force), modifiers: unwrap_impl(modifiers), noWaitAfter: unwrap_impl(noWaitAfter), position: unwrap_impl(position), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
end

#disabled?(timeout: nil) ⇒ Boolean

Returns whether the element is disabled, the opposite of [enabled](../actionability.md#enabled).

Returns:

  • (Boolean)


405
406
407
# File 'lib/playwright_api/locator.rb', line 405

def disabled?(timeout: nil)
  wrap_impl(@impl.disabled?(timeout: unwrap_impl(timeout)))
end

#dispatch_event(type, eventInit: nil, timeout: nil) ⇒ Object

The snippet below dispatches the ‘click` event on the element. Regardless of the visibility state of the element, `click` is dispatched. This is equivalent to calling [element.click()](developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click).

“‘python sync element.dispatch_event(“click”) “`

Under the hood, it creates an instance of an event based on the given ‘type`, initializes it with `eventInit` properties and dispatches it on the element. Events are `composed`, `cancelable` and bubble by default.

Since ‘eventInit` is event-specific, please refer to the events documentation for the lists of initial properties:

You can also specify ‘JSHandle` as the property value if you want live objects to be passed into the event:

“‘python sync # note you can only create data_transfer in chromium and firefox data_transfer = page.evaluate_handle(“new DataTransfer()”) element.dispatch_event(“#source”, “dragstart”, data_transfer) “`



141
142
143
# File 'lib/playwright_api/locator.rb', line 141

def dispatch_event(type, eventInit: nil, timeout: nil)
  wrap_impl(@impl.dispatch_event(unwrap_impl(type), eventInit: unwrap_impl(eventInit), timeout: unwrap_impl(timeout)))
end

#drag_to(target, force: nil, noWaitAfter: nil, sourcePosition: nil, targetPosition: nil, timeout: nil, trial: nil) ⇒ Object

This method drags the locator to another target locator or target position. It will first move to the source element, perform a ‘mousedown`, then move to the target element or position and perform a `mouseup`.

“‘python sync source = page.locator(“#source”) target = page.locator(“#target”)

source.drag_to(target) # or specify exact positions relative to the top-left corners of the elements: source.drag_to(

target,
source_position={"x": 34, "y": 7},
target_position={"x": 10, "y": 20}

) “‘



160
161
162
163
164
165
166
167
168
169
# File 'lib/playwright_api/locator.rb', line 160

def drag_to(
      target,
      force: nil,
      noWaitAfter: nil,
      sourcePosition: nil,
      targetPosition: nil,
      timeout: nil,
      trial: nil)
  wrap_impl(@impl.drag_to(unwrap_impl(target), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), sourcePosition: unwrap_impl(sourcePosition), targetPosition: unwrap_impl(targetPosition), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
end

#editable?(timeout: nil) ⇒ Boolean

Returns whether the element is [editable](../actionability.md#editable).

Returns:

  • (Boolean)


410
411
412
# File 'lib/playwright_api/locator.rb', line 410

def editable?(timeout: nil)
  wrap_impl(@impl.editable?(timeout: unwrap_impl(timeout)))
end

#element_handle(timeout: nil) ⇒ Object

Resolves given locator to the first matching DOM element. If no elements matching the query are visible, waits for them up to a given timeout. If multiple elements match the selector, throws.



173
174
175
# File 'lib/playwright_api/locator.rb', line 173

def element_handle(timeout: nil)
  wrap_impl(@impl.element_handle(timeout: unwrap_impl(timeout)))
end

#element_handlesObject

Resolves given locator to all matching DOM elements.



178
179
180
# File 'lib/playwright_api/locator.rb', line 178

def element_handles
  wrap_impl(@impl.element_handles)
end

#enabled?(timeout: nil) ⇒ Boolean

Returns whether the element is [enabled](../actionability.md#enabled).

Returns:

  • (Boolean)


415
416
417
# File 'lib/playwright_api/locator.rb', line 415

def enabled?(timeout: nil)
  wrap_impl(@impl.enabled?(timeout: unwrap_impl(timeout)))
end

#evaluate(expression, arg: nil, timeout: nil) ⇒ Object

Returns the return value of ‘expression`.

This method passes this handle as the first argument to ‘expression`.

If ‘expression` returns a [Promise], then `handle.evaluate` would wait for the promise to resolve and return its value.

Examples:

“‘python sync tweets = page.locator(“.tweet .retweets”) assert tweets.evaluate(“node => node.innerText”) == “10 retweets” “`



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

def evaluate(expression, arg: nil, timeout: nil)
  wrap_impl(@impl.evaluate(unwrap_impl(expression), arg: unwrap_impl(arg), timeout: unwrap_impl(timeout)))
end

#evaluate_all(expression, arg: nil) ⇒ Object

The method finds all elements matching the specified locator and passes an array of matched elements as a first argument to ‘expression`. Returns the result of `expression` invocation.

If ‘expression` returns a [Promise], then [`method: Locator.evaluateAll`] would wait for the promise to resolve and return its value.

Examples:

“‘python sync elements = page.locator(“div”) div_counts = elements(“(divs, min) => divs.length >= min”, 10) “`



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

def evaluate_all(expression, arg: nil)
  wrap_impl(@impl.evaluate_all(unwrap_impl(expression), arg: unwrap_impl(arg)))
end

#evaluate_handle(expression, arg: nil, timeout: nil) ⇒ Object

Returns the return value of ‘expression` as a `JSHandle`.

This method passes this handle as the first argument to ‘expression`.

The only difference between [‘method: Locator.evaluate`] and [`method: Locator.evaluateHandle`] is that

‘method: Locator.evaluateHandle`

returns ‘JSHandle`.

If the function passed to the [‘method: Locator.evaluateHandle`] returns a [Promise], then

‘method: Locator.evaluateHandle`

would wait for the promise to resolve and return its value.

See [‘method: Page.evaluateHandle`] for more details.



225
226
227
# File 'lib/playwright_api/locator.rb', line 225

def evaluate_handle(expression, arg: nil, timeout: nil)
  wrap_impl(@impl.evaluate_handle(unwrap_impl(expression), arg: unwrap_impl(arg), timeout: unwrap_impl(timeout)))
end

#fill(value, force: nil, noWaitAfter: nil, timeout: nil) ⇒ Object

This method waits for [actionability](../actionability.md) checks, focuses the element, fills it and triggers an ‘input` event after filling. Note that you can pass an empty string to clear the input field.

If the target element is not an ‘<input>`, `<textarea>` or `[contenteditable]` element, this method throws an error. However, if the element is inside the `<label>` element that has an associated [control](developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be filled instead.

To send fine-grained keyboard events, use [‘method: Locator.type`].



238
239
240
# File 'lib/playwright_api/locator.rb', line 238

def fill(value, force: nil, noWaitAfter: nil, timeout: nil)
  wrap_impl(@impl.fill(unwrap_impl(value), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
end

#filter(has: nil, hasText: nil) ⇒ Object

This method narrows existing locator according to the options, for example filters by text. It can be chained to filter multiple times.

“‘python sync row_locator = page.locator(“tr”) # … row_locator

.filter(has_text="text in column 1")
.filter(has=page.get_by_role("button", name="column 2 button"))
.screenshot()

“‘



253
254
255
# File 'lib/playwright_api/locator.rb', line 253

def filter(has: nil, hasText: nil)
  wrap_impl(@impl.filter(has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
end

#firstObject

Returns locator to the first matching element.



258
259
260
# File 'lib/playwright_api/locator.rb', line 258

def first
  wrap_impl(@impl.first)
end

#focus(timeout: nil) ⇒ Object



263
264
265
# File 'lib/playwright_api/locator.rb', line 263

def focus(timeout: nil)
  wrap_impl(@impl.focus(timeout: unwrap_impl(timeout)))
end

#frame_locator(selector) ⇒ Object

When working with iframes, you can create a frame locator that will enter the iframe and allow selecting elements in that iframe:

“‘python sync locator = page.frame_locator(“iframe”).get_by_text(“Submit”) locator.click() “`



274
275
276
# File 'lib/playwright_api/locator.rb', line 274

def frame_locator(selector)
  wrap_impl(@impl.frame_locator(unwrap_impl(selector)))
end

#get_attribute(name, timeout: nil) ⇒ Object Also known as: []

Returns element attribute value.



279
280
281
# File 'lib/playwright_api/locator.rb', line 279

def get_attribute(name, timeout: nil)
  wrap_impl(@impl.get_attribute(unwrap_impl(name), timeout: unwrap_impl(timeout)))
end

#get_by_alt_text(text, exact: nil) ⇒ Object

Allows locating elements by their alt text. For example, this method will find the image by alt text “Castle”:

“‘html <img alt=’Castle’> “‘



289
290
291
# File 'lib/playwright_api/locator.rb', line 289

def get_by_alt_text(text, exact: nil)
  wrap_impl(@impl.get_by_alt_text(unwrap_impl(text), exact: unwrap_impl(exact)))
end

#get_by_label(text, exact: nil) ⇒ Object

Allows locating input elements by the text of the associated label. For example, this method will find the input by label text Password in the following DOM:

“‘html <label for=“password-input”>Password:</label> <input id=“password-input”> “`



300
301
302
# File 'lib/playwright_api/locator.rb', line 300

def get_by_label(text, exact: nil)
  wrap_impl(@impl.get_by_label(unwrap_impl(text), exact: unwrap_impl(exact)))
end

#get_by_placeholder(text, exact: nil) ⇒ Object

Allows locating input elements by the placeholder text. For example, this method will find the input by placeholder “Country”:

“‘html <input placeholder=“Country”> “`



310
311
312
# File 'lib/playwright_api/locator.rb', line 310

def get_by_placeholder(text, exact: nil)
  wrap_impl(@impl.get_by_placeholder(unwrap_impl(text), exact: unwrap_impl(exact)))
end

#get_by_role(role, checked: nil, disabled: nil, expanded: nil, includeHidden: nil, level: nil, name: nil, pressed: nil, selected: nil) ⇒ Object

Allows locating elements by their [ARIA role](www.w3.org/TR/wai-aria-1.2/#roles), [ARIA attributes](www.w3.org/TR/wai-aria-1.2/#aria-attributes) and [accessible name](w3c.github.io/accname/#dfn-accessible-name). Note that role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback about the ARIA guidelines.

Note that many html elements have an implicitly [defined role](w3c.github.io/html-aam/#html-element-role-mappings) that is recognized by the role selector. You can find all the [supported roles here](www.w3.org/TR/wai-aria-1.2/#role_definitions). ARIA guidelines **do not recommend** duplicating implicit roles and attributes by setting ‘role` and/or `aria-*` attributes to default values.



323
324
325
326
327
328
329
330
331
332
333
334
# File 'lib/playwright_api/locator.rb', line 323

def get_by_role(
      role,
      checked: nil,
      disabled: nil,
      expanded: nil,
      includeHidden: nil,
      level: nil,
      name: nil,
      pressed: nil,
      selected: nil)
  wrap_impl(@impl.get_by_role(unwrap_impl(role), checked: unwrap_impl(checked), disabled: unwrap_impl(disabled), expanded: unwrap_impl(expanded), includeHidden: unwrap_impl(includeHidden), level: unwrap_impl(level), name: unwrap_impl(name), pressed: unwrap_impl(pressed), selected: unwrap_impl(selected)))
end

#get_by_test_id(testId) ⇒ Object

Locate element by the test id. By default, the ‘data-testid` attribute is used as a test id. Use

‘method: Selectors.setTestIdAttribute`

to configure a different test id attribute if necessary.



338
339
340
# File 'lib/playwright_api/locator.rb', line 338

def get_by_test_id(testId)
  wrap_impl(@impl.get_by_test_id(unwrap_impl(testId)))
end

#get_by_text(text, exact: nil) ⇒ Object

Allows locating elements that contain given text.



343
344
345
# File 'lib/playwright_api/locator.rb', line 343

def get_by_text(text, exact: nil)
  wrap_impl(@impl.get_by_text(unwrap_impl(text), exact: unwrap_impl(exact)))
end

#get_by_title(text, exact: nil) ⇒ Object

Allows locating elements by their title. For example, this method will find the button by its title “Submit”:

“‘html <button title=’Place the order’>Order Now</button> “‘



352
353
354
# File 'lib/playwright_api/locator.rb', line 352

def get_by_title(text, exact: nil)
  wrap_impl(@impl.get_by_title(unwrap_impl(text), exact: unwrap_impl(exact)))
end

#hidden?(timeout: nil) ⇒ Boolean

Returns whether the element is hidden, the opposite of [visible](../actionability.md#visible).

Returns:

  • (Boolean)


420
421
422
# File 'lib/playwright_api/locator.rb', line 420

def hidden?(timeout: nil)
  wrap_impl(@impl.hidden?(timeout: unwrap_impl(timeout)))
end

#highlightObject

Highlight the corresponding element(s) on the screen. Useful for debugging, don’t commit the code that uses [‘method: Locator.highlight`].



358
359
360
# File 'lib/playwright_api/locator.rb', line 358

def highlight
  wrap_impl(@impl.highlight)
end

#hover(force: nil, modifiers: nil, position: nil, timeout: nil, trial: nil) ⇒ Object

This method hovers over the element by performing the following steps:

  1. Wait for [actionability](../actionability.md) checks on the element, unless ‘force` option is set.

  2. Scroll the element into view if needed.

  3. Use [‘property: Page.mouse`] to hover over the center of the element, or the specified `position`.

  4. Wait for initiated navigations to either succeed or fail, unless ‘noWaitAfter` option is set.

If the element is detached from the DOM at any moment during the action, this method throws.

When all steps combined have not finished during the specified ‘timeout`, this method throws a `TimeoutError`. Passing zero timeout disables this.



372
373
374
375
376
377
378
379
# File 'lib/playwright_api/locator.rb', line 372

def hover(
      force: nil,
      modifiers: nil,
      position: nil,
      timeout: nil,
      trial: nil)
  wrap_impl(@impl.hover(force: unwrap_impl(force), modifiers: unwrap_impl(modifiers), position: unwrap_impl(position), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
end

#inner_html(timeout: nil) ⇒ Object

Returns the ‘element.innerHTML`.



382
383
384
# File 'lib/playwright_api/locator.rb', line 382

def inner_html(timeout: nil)
  wrap_impl(@impl.inner_html(timeout: unwrap_impl(timeout)))
end

#inner_text(timeout: nil) ⇒ Object

Returns the ‘element.innerText`.



387
388
389
# File 'lib/playwright_api/locator.rb', line 387

def inner_text(timeout: nil)
  wrap_impl(@impl.inner_text(timeout: unwrap_impl(timeout)))
end

#input_value(timeout: nil) ⇒ Object

Returns ‘input.value` for the selected `<input>` or `<textarea>` or `<select>` element.

Throws for non-input elements. However, if the element is inside the ‘<label>` element that has an associated [control](developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), returns the value of the control.



395
396
397
# File 'lib/playwright_api/locator.rb', line 395

def input_value(timeout: nil)
  wrap_impl(@impl.input_value(timeout: unwrap_impl(timeout)))
end

#lastObject

Returns locator to the last matching element.



430
431
432
# File 'lib/playwright_api/locator.rb', line 430

def last
  wrap_impl(@impl.last)
end

#locator(selector, has: nil, hasText: nil) ⇒ Object

The method finds an element matching the specified selector in the locator’s subtree. It also accepts filter options, similar to [‘method: Locator.filter`] method.

[Learn more about locators](../locators.md).



438
439
440
# File 'lib/playwright_api/locator.rb', line 438

def locator(selector, has: nil, hasText: nil)
  wrap_impl(@impl.locator(unwrap_impl(selector), has: unwrap_impl(has), hasText: unwrap_impl(hasText)))
end

#nth(index) ⇒ Object

Returns locator to the n-th matching element. It’s zero based, ‘nth(0)` selects the first element.



443
444
445
# File 'lib/playwright_api/locator.rb', line 443

def nth(index)
  wrap_impl(@impl.nth(unwrap_impl(index)))
end

#pageObject

A page this locator belongs to.



448
449
450
# File 'lib/playwright_api/locator.rb', line 448

def page
  wrap_impl(@impl.page)
end

#press(key, delay: nil, noWaitAfter: nil, timeout: nil) ⇒ Object

Focuses the element, and then uses [‘method: Keyboard.down`] and [`method: Keyboard.up`].

‘key` can specify the intended [keyboardEvent.key](developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key) value or a single character to generate the text for. A superset of the `key` values can be found [here](developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values). Examples of the keys are:

‘F1` - `F12`, `Digit0`- `Digit9`, `KeyA`- `KeyZ`, `Backquote`, `Minus`, `Equal`, `Backslash`, `Backspace`, `Tab`, `Delete`, `Escape`, `ArrowDown`, `End`, `Enter`, `Home`, `Insert`, `PageDown`, `PageUp`, `ArrowRight`, `ArrowUp`, etc.

Following modification shortcuts are also supported: ‘Shift`, `Control`, `Alt`, `Meta`, `ShiftLeft`.

Holding down ‘Shift` will type the text that corresponds to the `key` in the upper case.

If ‘key` is a single character, it is case-sensitive, so the values `a` and `A` will generate different respective texts.

Shortcuts such as ‘key: “Control+o”` or `key: “Control+Shift+T”` are supported as well. When specified with the modifier, modifier is pressed and being held while the subsequent key is being pressed.



470
471
472
# File 'lib/playwright_api/locator.rb', line 470

def press(key, delay: nil, noWaitAfter: nil, timeout: nil)
  wrap_impl(@impl.press(unwrap_impl(key), delay: unwrap_impl(delay), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
end

#screenshot(animations: nil, caret: nil, mask: nil, omitBackground: nil, path: nil, quality: nil, scale: nil, timeout: nil, type: nil) ⇒ Object

This method captures a screenshot of the page, clipped to the size and position of a particular element matching the locator. If the element is covered by other elements, it will not be actually visible on the screenshot. If the element is a scrollable container, only the currently scrolled content will be visible on the screenshot.

This method waits for the [actionability](../actionability.md) checks, then scrolls element into view before taking a screenshot. If the element is detached from DOM, the method throws an error.

Returns the buffer with the captured screenshot.



482
483
484
485
486
487
488
489
490
491
492
493
# File 'lib/playwright_api/locator.rb', line 482

def screenshot(
      animations: nil,
      caret: nil,
      mask: nil,
      omitBackground: nil,
      path: nil,
      quality: nil,
      scale: nil,
      timeout: nil,
      type: nil)
  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)))
end

#scroll_into_view_if_needed(timeout: nil) ⇒ Object

This method waits for [actionability](../actionability.md) checks, then tries to scroll element into view, unless it is completely visible as defined by [IntersectionObserver](developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API)‘s `ratio`.



498
499
500
# File 'lib/playwright_api/locator.rb', line 498

def scroll_into_view_if_needed(timeout: nil)
  wrap_impl(@impl.scroll_into_view_if_needed(timeout: unwrap_impl(timeout)))
end

#select_option(element: nil, index: nil, value: nil, label: nil, force: nil, noWaitAfter: nil, timeout: nil) ⇒ Object

This method waits for [actionability](../actionability.md) checks, waits until all specified options are present in the ‘<select>` element and selects these options.

If the target element is not a ‘<select>` element, this method throws an error. However, if the element is inside the `<label>` element that has an associated [control](developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), the control will be used instead.

Returns the array of option values that have been successfully selected.

Triggers a ‘change` and `input` event once all the provided options have been selected.

“‘python sync # single selection matching the value element.select_option(“blue”) # single selection matching both the label element.select_option(label=“blue”) # multiple selection element.select_option(value=[“red”, “green”, “blue”]) “`



521
522
523
524
525
526
527
528
529
530
# File 'lib/playwright_api/locator.rb', line 521

def select_option(
      element: nil,
      index: nil,
      value: nil,
      label: nil,
      force: nil,
      noWaitAfter: nil,
      timeout: nil)
  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)))
end

#select_text(force: nil, timeout: nil) ⇒ Object

This method waits for [actionability](../actionability.md) checks, then focuses the element and selects all its text content.

If the element is inside the ‘<label>` element that has an associated [control](developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), focuses and selects text in the control instead.



538
539
540
# File 'lib/playwright_api/locator.rb', line 538

def select_text(force: nil, timeout: nil)
  wrap_impl(@impl.select_text(force: unwrap_impl(force), timeout: unwrap_impl(timeout)))
end

#set_checked(checked, force: nil, noWaitAfter: nil, position: nil, timeout: nil, trial: nil) ⇒ Object Also known as: checked=

This method checks or unchecks an element by performing the following steps:

  1. Ensure that matched element is a checkbox or a radio input. If not, this method throws.

  2. If the element already has the right checked state, this method returns immediately.

  3. Wait for [actionability](../actionability.md) checks on the matched element, unless ‘force` option is set. If the element is detached during the checks, the whole action is retried.

  4. Scroll the element into view if needed.

  5. Use [‘property: Page.mouse`] to click in the center of the element.

  6. Wait for initiated navigations to either succeed or fail, unless ‘noWaitAfter` option is set.

  7. Ensure that the element is now checked or unchecked. If not, this method throws.

When all steps combined have not finished during the specified ‘timeout`, this method throws a `TimeoutError`. Passing zero timeout disables this.



554
555
556
557
558
559
560
561
562
# File 'lib/playwright_api/locator.rb', line 554

def set_checked(
      checked,
      force: nil,
      noWaitAfter: nil,
      position: nil,
      timeout: nil,
      trial: nil)
  wrap_impl(@impl.set_checked(unwrap_impl(checked), force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), position: unwrap_impl(position), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
end

#set_input_files(files, noWaitAfter: nil, timeout: nil) ⇒ Object Also known as: input_files=

Sets the value of the file input to these file paths or files. If some of the ‘filePaths` are relative paths, then they are resolved relative to the current working directory. For empty array, clears the selected files.

This method expects ‘Locator` to point to an [input element](developer.mozilla.org/en-US/docs/Web/HTML/Element/input). However, if the element is inside the `<label>` element that has an associated [control](developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement/control), targets the control instead.



572
573
574
# File 'lib/playwright_api/locator.rb', line 572

def set_input_files(files, noWaitAfter: nil, timeout: nil)
  wrap_impl(@impl.set_input_files(unwrap_impl(files), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
end

#tap_point(force: nil, modifiers: nil, noWaitAfter: nil, position: nil, timeout: nil, trial: nil) ⇒ Object

This method taps the element by performing the following steps:

  1. Wait for [actionability](../actionability.md) checks on the element, unless ‘force` option is set.

  2. Scroll the element into view if needed.

  3. Use [‘property: Page.touchscreen`] to tap the center of the element, or the specified `position`.

  4. Wait for initiated navigations to either succeed or fail, unless ‘noWaitAfter` option is set.

If the element is detached from the DOM at any moment during the action, this method throws.

When all steps combined have not finished during the specified ‘timeout`, this method throws a `TimeoutError`. Passing zero timeout disables this.

> NOTE: ‘element.tap()` requires that the `hasTouch` option of the browser context be set to true.



589
590
591
592
593
594
595
596
597
# File 'lib/playwright_api/locator.rb', line 589

def tap_point(
      force: nil,
      modifiers: nil,
      noWaitAfter: nil,
      position: nil,
      timeout: nil,
      trial: nil)
  wrap_impl(@impl.tap_point(force: unwrap_impl(force), modifiers: unwrap_impl(modifiers), noWaitAfter: unwrap_impl(noWaitAfter), position: unwrap_impl(position), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
end

#text_content(timeout: nil) ⇒ Object

Returns the ‘node.textContent`.



600
601
602
# File 'lib/playwright_api/locator.rb', line 600

def text_content(timeout: nil)
  wrap_impl(@impl.text_content(timeout: unwrap_impl(timeout)))
end

#to_sObject



660
661
662
# File 'lib/playwright_api/locator.rb', line 660

def to_s
  wrap_impl(@impl.to_s)
end

#type(text, delay: nil, noWaitAfter: nil, timeout: nil) ⇒ Object

Focuses the element, and then sends a ‘keydown`, `keypress`/`input`, and `keyup` event for each character in the text.

To press a special key, like ‘Control` or `ArrowDown`, use [`method: Locator.press`].

“‘python sync element.type(“hello”) # types instantly element.type(“world”, delay=100) # types slower, like a user “`

An example of typing into a text field and then submitting the form:

“‘python sync element = page.get_by_label(“Password”) element.type(“my password”) element.press(“Enter”) “`



620
621
622
# File 'lib/playwright_api/locator.rb', line 620

def type(text, delay: nil, noWaitAfter: nil, timeout: nil)
  wrap_impl(@impl.type(unwrap_impl(text), delay: unwrap_impl(delay), noWaitAfter: unwrap_impl(noWaitAfter), timeout: unwrap_impl(timeout)))
end

#uncheck(force: nil, noWaitAfter: nil, position: nil, timeout: nil, trial: nil) ⇒ Object

This method checks the element by performing the following steps:

  1. Ensure that element is a checkbox or a radio input. If not, this method throws. If the element is already unchecked, this method returns immediately.

  2. Wait for [actionability](../actionability.md) checks on the element, unless ‘force` option is set.

  3. Scroll the element into view if needed.

  4. Use [‘property: Page.mouse`] to click in the center of the element.

  5. Wait for initiated navigations to either succeed or fail, unless ‘noWaitAfter` option is set.

  6. Ensure that the element is now unchecked. If not, this method throws.

If the element is detached from the DOM at any moment during the action, this method throws.

When all steps combined have not finished during the specified ‘timeout`, this method throws a `TimeoutError`. Passing zero timeout disables this.



637
638
639
640
641
642
643
644
# File 'lib/playwright_api/locator.rb', line 637

def uncheck(
      force: nil,
      noWaitAfter: nil,
      position: nil,
      timeout: nil,
      trial: nil)
  wrap_impl(@impl.uncheck(force: unwrap_impl(force), noWaitAfter: unwrap_impl(noWaitAfter), position: unwrap_impl(position), timeout: unwrap_impl(timeout), trial: unwrap_impl(trial)))
end

#visible?(timeout: nil) ⇒ Boolean

Returns whether the element is [visible](../actionability.md#visible).

Returns:

  • (Boolean)


425
426
427
# File 'lib/playwright_api/locator.rb', line 425

def visible?(timeout: nil)
  wrap_impl(@impl.visible?(timeout: unwrap_impl(timeout)))
end

#wait_for(state: nil, timeout: nil) ⇒ Object

Returns when element specified by locator satisfies the ‘state` option.

If target element already satisfies the condition, the method returns immediately. Otherwise, waits for up to ‘timeout` milliseconds until the condition is met.

“‘python sync order_sent = page.locator(“#order-sent”) order_sent.wait_for() “`



655
656
657
# File 'lib/playwright_api/locator.rb', line 655

def wait_for(state: nil, timeout: nil)
  wrap_impl(@impl.wait_for(state: unwrap_impl(state), timeout: unwrap_impl(timeout)))
end