Class LocatorImpl

java.lang.Object
com.microsoft.playwright.impl.LocatorImpl
All Implemented Interfaces:
Locator

class LocatorImpl extends Object implements Locator
  • Field Details

  • Constructor Details

  • Method Details

    • escapeWithQuotes

      private static String escapeWithQuotes(String text)
    • withElement

      private <R, O> R withElement(BiFunction<ElementHandle,O,R> callback, O options)
    • all

      public List<Locator> all()
      Description copied from interface: Locator
      When the locator points to a list of elements, this returns an array of locators, pointing to their respective elements.

      NOTE: Locator.all() does not wait for elements to match the locator, and instead immediately returns whatever is present in the page. When the list of elements changes dynamically, Locator.all() will produce unpredictable and flaky results. When the list of elements is stable, but loaded dynamically, wait for the full list to finish loading before calling Locator.all().

      **Usage**

      
       for (Locator li : page.getByRole('listitem').all())
         li.click();
       
      Specified by:
      all in interface Locator
    • allInnerTexts

      public List<String> allInnerTexts()
      Description copied from interface: Locator
      Returns an array of node.innerText values for all matching nodes.

      NOTE: If you need to assert text on the page, prefer

      invalid reference
      LocatorAssertions.hasText()
      with useInnerText option to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       String[] texts = page.getByRole(AriaRole.LINK).allInnerTexts();
       
      Specified by:
      allInnerTexts in interface Locator
    • allTextContents

      public List<String> allTextContents()
      Description copied from interface: Locator
      Returns an array of node.textContent values for all matching nodes.

      NOTE: If you need to assert text on the page, prefer

      invalid reference
      LocatorAssertions.hasText()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       String[] texts = page.getByRole(AriaRole.LINK).allTextContents();
       
      Specified by:
      allTextContents in interface Locator
    • and

      public Locator and(Locator locator)
      Description copied from interface: Locator
      Creates a locator that matches both this locator and the argument locator.

      **Usage**

      The following example finds a button with a specific title.

      
       Locator button = page.getByRole(AriaRole.BUTTON).and(page.getByTitle("Subscribe"));
       
      Specified by:
      and in interface Locator
      Parameters:
      locator - Additional locator to match.
    • blur

      public void blur(Locator.BlurOptions options)
      Description copied from interface: Locator
      Calls blur on the element.
      Specified by:
      blur in interface Locator
    • blurImpl

      private void blurImpl(Locator.BlurOptions options)
    • boundingBox

      public BoundingBox boundingBox(Locator.BoundingBoxOptions options)
      Description copied from interface: Locator
      This method returns the bounding box of the element matching the locator, 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.

      **Details**

      Scrolling affects the returned bounding box, similarly to 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.

      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.

      **Usage**

      
       BoundingBox box = page.getByRole(AriaRole.BUTTON).boundingBox();
       page.mouse().click(box.x + box.width / 2, box.y + box.height / 2);
       
      Specified by:
      boundingBox in interface Locator
    • check

      public void check(Locator.CheckOptions options)
      Description copied from interface: Locator
      Ensure that checkbox or radio element is checked.

      **Details**

      Performs 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 checks on the element, unless force option is set.
      3. Scroll the element into view if needed.
      4. Use 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.

      **Usage**

      
       page.getByRole(AriaRole.CHECKBOX).check();
       
      Specified by:
      check in interface Locator
    • clear

      public void clear(Locator.ClearOptions options)
      Description copied from interface: Locator
      Clear the input field.

      **Details**

      This method waits for actionability checks, focuses the element, clears it and triggers an input event after clearing.

      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, the control will be cleared instead.

      **Usage**

      
       page.getByRole(AriaRole.TEXTBOX).clear();
       
      Specified by:
      clear in interface Locator
    • click

      public void click(Locator.ClickOptions options)
      Description copied from interface: Locator
      Click an element.

      **Details**

      This method clicks the element by performing the following steps:

      1. Wait for actionability checks on the element, unless force option is set.
      2. Scroll the element into view if needed.
      3. Use 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.

      **Usage**

      Click a button:

      
       page.getByRole(AriaRole.BUTTON).click();
       

      Shift-right-click at a specific position on a canvas:

      
       page.locator("canvas").click(new Locator.ClickOptions()
         .setButton(MouseButton.RIGHT)
         .setModifiers(Arrays.asList(KeyboardModifier.SHIFT))
         .setPosition(23, 32));
       
      Specified by:
      click in interface Locator
    • count

      public int count()
      Description copied from interface: Locator
      Returns the number of elements matching the locator.

      NOTE: If you need to assert the number of elements on the page, prefer

      invalid reference
      LocatorAssertions.hasCount()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       int count = page.getByRole(AriaRole.LISTITEM).count();
       
      Specified by:
      count in interface Locator
    • dblclick

      public void dblclick(Locator.DblclickOptions options)
      Description copied from interface: Locator
      Double-click an element.

      **Details**

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

      1. Wait for actionability checks on the element, unless force option is set.
      2. Scroll the element into view if needed.
      3. Use 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.

      Specified by:
      dblclick in interface Locator
    • dispatchEvent

      public void dispatchEvent(String type, Object eventInit, Locator.DispatchEventOptions options)
      Description copied from interface: Locator
      Programmatically dispatch an event on the matching element.

      **Usage**

      
       locator.dispatchEvent("click");
       

      **Details**

      The snippet above 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().

      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:

      
       // Note you can only create DataTransfer in Chromium and Firefox
       JSHandle dataTransfer = page.evaluateHandle("() => new DataTransfer()");
       Map<String, Object> arg = new HashMap<>();
       arg.put("dataTransfer", dataTransfer);
       locator.dispatchEvent("dragstart", arg);
       
      Specified by:
      dispatchEvent in interface Locator
      Parameters:
      type - DOM event type: "click", "dragstart", etc.
      eventInit - Optional event-specific initialization properties.
    • dragTo

      public void dragTo(Locator target, Locator.DragToOptions options)
      Description copied from interface: Locator
      Drag the source element towards the target element and drop it.

      **Details**

      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.

      **Usage**

      
       Locator source = page.locator("#source");
       Locator target = page.locator("#target");
      
       source.dragTo(target);
       // or specify exact positions relative to the top-left corners of the elements:
       source.dragTo(target, new Locator.DragToOptions()
         .setSourcePosition(34, 7).setTargetPosition(10, 20));
       
      Specified by:
      dragTo in interface Locator
      Parameters:
      target - Locator of the element to drag to.
    • elementHandle

      public ElementHandle elementHandle(Locator.ElementHandleOptions options)
      Description copied from interface: Locator
      Resolves given locator to the first matching DOM element. If there are no matching elements, waits for one. If multiple elements match the locator, throws.
      Specified by:
      elementHandle in interface Locator
    • elementHandles

      public List<ElementHandle> elementHandles()
      Description copied from interface: Locator
      Resolves given locator to all matching DOM elements. If there are no matching elements, returns an empty list.
      Specified by:
      elementHandles in interface Locator
    • evaluate

      public Object evaluate(String expression, Object arg, Locator.EvaluateOptions options)
      Description copied from interface: Locator
      Execute JavaScript code in the page, taking the matching element as an argument.

      **Details**

      Returns the return value of expression, called with the matching element as a first argument, and arg as a second argument.

      If expression returns a Promise, this method will wait for the promise to resolve and return its value.

      If expression throws or rejects, this method throws.

      **Usage**

      
       Locator tweets = page.locator(".tweet .retweets");
       assertEquals("10 retweets", tweets.evaluate("node => node.innerText"));
       
      Specified by:
      evaluate in interface Locator
      Parameters:
      expression - JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
      arg - Optional argument to pass to expression.
    • evaluateAll

      public Object evaluateAll(String expression, Object arg)
      Description copied from interface: Locator
      Execute JavaScript code in the page, taking all matching elements as an argument.

      **Details**

      Returns the return value of expression, called with an array of all matching elements as a first argument, and arg as a second argument.

      If expression returns a Promise, this method will wait for the promise to resolve and return its value.

      If expression throws or rejects, this method throws.

      **Usage**

      
       Locator locator = page.locator("div");
       boolean moreThanTen = (boolean) locator.evaluateAll("(divs, min) => divs.length > min", 10);
       
      Specified by:
      evaluateAll in interface Locator
      Parameters:
      expression - JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
      arg - Optional argument to pass to expression.
    • evaluateHandle

      public JSHandle evaluateHandle(String expression, Object arg, Locator.EvaluateHandleOptions options)
      Description copied from interface: Locator
      Execute JavaScript code in the page, taking the matching element as an argument, and return a JSHandle with the result.

      **Details**

      Returns the return value of expression as aJSHandle, called with the matching element as a first argument, and arg as a second argument.

      The only difference between Locator.evaluate() and Locator.evaluateHandle() is that Locator.evaluateHandle() returns JSHandle.

      If expression returns a Promise, this method will wait for the promise to resolve and return its value.

      If expression throws or rejects, this method throws.

      See Page.evaluateHandle() for more details.

      Specified by:
      evaluateHandle in interface Locator
      Parameters:
      expression - JavaScript expression to be evaluated in the browser context. If the expression evaluates to a function, the function is automatically invoked.
      arg - Optional argument to pass to expression.
    • fill

      public void fill(String value, Locator.FillOptions options)
      Description copied from interface: Locator
      Set a value to the input field.

      **Usage**

      
       page.getByRole(AriaRole.TEXTBOX).fill("example value");
       

      **Details**

      This method waits for actionability 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, the control will be filled instead.

      To send fine-grained keyboard events, use Locator.pressSequentially().

      Specified by:
      fill in interface Locator
      Parameters:
      value - Value to set for the <input>, <textarea> or [contenteditable] element.
    • filter

      public Locator filter(Locator.FilterOptions options)
      Description copied from interface: Locator
      This method narrows existing locator according to the options, for example filters by text. It can be chained to filter multiple times.

      **Usage**

      
       Locator rowLocator = page.locator("tr");
       // ...
       rowLocator
           .filter(new Locator.FilterOptions().setHasText("text in column 1"))
           .filter(new Locator.FilterOptions().setHas(
               page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("column 2 button"))
           ))
           .screenshot();
       
      Specified by:
      filter in interface Locator
    • first

      public Locator first()
      Description copied from interface: Locator
      Returns locator to the first matching element.
      Specified by:
      first in interface Locator
    • focus

      public void focus(Locator.FocusOptions options)
      Description copied from interface: Locator
      Calls focus on the matching element.
      Specified by:
      focus in interface Locator
    • frameLocator

      public FrameLocatorImpl frameLocator(String selector)
      Description copied from interface: Locator
      When working with iframes, you can create a frame locator that will enter the iframe and allow locating elements in that iframe:

      **Usage**

      
       Locator locator = page.frameLocator("iframe").getByText("Submit");
       locator.click();
       
      Specified by:
      frameLocator in interface Locator
      Parameters:
      selector - A selector to use when resolving DOM element.
    • getAttribute

      public String getAttribute(String name, Locator.GetAttributeOptions options)
      Description copied from interface: Locator
      Returns the matching element's attribute value.

      NOTE: If you need to assert an element's attribute, prefer

      invalid reference
      LocatorAssertions.hasAttribute()
      to avoid flakiness. See assertions guide for more details.
      Specified by:
      getAttribute in interface Locator
      Parameters:
      name - Attribute name to get the value for.
    • getByAltText

      public Locator getByAltText(String text, Locator.GetByAltTextOptions options)
      Description copied from interface: Locator
      Allows locating elements by their alt text.

      **Usage**

      For example, this method will find the image by alt text "Playwright logo":

      
       page.getByAltText("Playwright logo").click();
       
      Specified by:
      getByAltText in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByAltText

      public Locator getByAltText(Pattern text, Locator.GetByAltTextOptions options)
      Description copied from interface: Locator
      Allows locating elements by their alt text.

      **Usage**

      For example, this method will find the image by alt text "Playwright logo":

      
       page.getByAltText("Playwright logo").click();
       
      Specified by:
      getByAltText in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByLabel

      public Locator getByLabel(String text, Locator.GetByLabelOptions options)
      Description copied from interface: Locator
      Allows locating input elements by the text of the associated <label> or aria-labelledby element, or by the aria-label attribute.

      **Usage**

      For example, this method will find inputs by label "Username" and "Password" in the following DOM:

      
       page.getByLabel("Username").fill("john");
       page.getByLabel("Password").fill("secret");
       
      Specified by:
      getByLabel in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByLabel

      public Locator getByLabel(Pattern text, Locator.GetByLabelOptions options)
      Description copied from interface: Locator
      Allows locating input elements by the text of the associated <label> or aria-labelledby element, or by the aria-label attribute.

      **Usage**

      For example, this method will find inputs by label "Username" and "Password" in the following DOM:

      
       page.getByLabel("Username").fill("john");
       page.getByLabel("Password").fill("secret");
       
      Specified by:
      getByLabel in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByPlaceholder

      public Locator getByPlaceholder(String text, Locator.GetByPlaceholderOptions options)
      Description copied from interface: Locator
      Allows locating input elements by the placeholder text.

      **Usage**

      For example, consider the following DOM structure.

      You can fill the input after locating it by the placeholder text:

      
       page.getByPlaceholder("name@example.com").fill("playwright@microsoft.com");
       
      Specified by:
      getByPlaceholder in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByPlaceholder

      public Locator getByPlaceholder(Pattern text, Locator.GetByPlaceholderOptions options)
      Description copied from interface: Locator
      Allows locating input elements by the placeholder text.

      **Usage**

      For example, consider the following DOM structure.

      You can fill the input after locating it by the placeholder text:

      
       page.getByPlaceholder("name@example.com").fill("playwright@microsoft.com");
       
      Specified by:
      getByPlaceholder in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByRole

      public Locator getByRole(AriaRole role, Locator.GetByRoleOptions options)
      Description copied from interface: Locator
      Allows locating elements by their ARIA role, ARIA attributes and accessible name.

      **Usage**

      Consider the following DOM structure.

      You can locate each element by it's implicit role:

      
       assertThat(page
           .getByRole(AriaRole.HEADING,
                      new Page.GetByRoleOptions().setName("Sign up")))
           .isVisible();
      
       page.getByRole(AriaRole.CHECKBOX,
                      new Page.GetByRoleOptions().setName("Subscribe"))
           .check();
      
       page.getByRole(AriaRole.BUTTON,
                      new Page.GetByRoleOptions().setName(
                          Pattern.compile("submit", Pattern.CASE_INSENSITIVE)))
           .click();
       

      **Details**

      Role selector **does not replace** accessibility audits and conformance tests, but rather gives early feedback about the ARIA guidelines.

      Many html elements have an implicitly defined role that is recognized by the role selector. You can find all the supported roles here. ARIA guidelines **do not recommend** duplicating implicit roles and attributes by setting role and/or aria-* attributes to default values.

      Specified by:
      getByRole in interface Locator
      Parameters:
      role - Required aria role.
    • getByTestId

      public Locator getByTestId(String testId)
      Description copied from interface: Locator
      Locate element by the test id.

      **Usage**

      Consider the following DOM structure.

      You can locate the element by it's test id:

      
       page.getByTestId("directions").click();
       

      **Details**

      By default, the data-testid attribute is used as a test id. Use Selectors.setTestIdAttribute() to configure a different test id attribute if necessary.

      Specified by:
      getByTestId in interface Locator
      Parameters:
      testId - Id to locate the element by.
    • getByTestId

      public Locator getByTestId(Pattern testId)
      Description copied from interface: Locator
      Locate element by the test id.

      **Usage**

      Consider the following DOM structure.

      You can locate the element by it's test id:

      
       page.getByTestId("directions").click();
       

      **Details**

      By default, the data-testid attribute is used as a test id. Use Selectors.setTestIdAttribute() to configure a different test id attribute if necessary.

      Specified by:
      getByTestId in interface Locator
      Parameters:
      testId - Id to locate the element by.
    • getByText

      public Locator getByText(String text, Locator.GetByTextOptions options)
      Description copied from interface: Locator
      Allows locating elements that contain given text.

      See also Locator.filter() that allows to match by another criteria, like an accessible role, and then filter by the text content.

      **Usage**

      Consider the following DOM structure:

      You can locate by text substring, exact string, or a regular expression:

      
       // Matches <span>
       page.getByText("world")
      
       // Matches first <div>
       page.getByText("Hello world")
      
       // Matches second <div>
       page.getByText("Hello", new Page.GetByTextOptions().setExact(true))
      
       // Matches both <div>s
       page.getByText(Pattern.compile("Hello"))
      
       // Matches second <div>
       page.getByText(Pattern.compile("^hello$", Pattern.CASE_INSENSITIVE))
       

      **Details**

      Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into one, turns line breaks into spaces and ignores leading and trailing whitespace.

      Input elements of the type button and submit are matched by their value instead of the text content. For example, locating by text "Log in" matches <input type=button value="Log in">.

      Specified by:
      getByText in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByText

      public Locator getByText(Pattern text, Locator.GetByTextOptions options)
      Description copied from interface: Locator
      Allows locating elements that contain given text.

      See also Locator.filter() that allows to match by another criteria, like an accessible role, and then filter by the text content.

      **Usage**

      Consider the following DOM structure:

      You can locate by text substring, exact string, or a regular expression:

      
       // Matches <span>
       page.getByText("world")
      
       // Matches first <div>
       page.getByText("Hello world")
      
       // Matches second <div>
       page.getByText("Hello", new Page.GetByTextOptions().setExact(true))
      
       // Matches both <div>s
       page.getByText(Pattern.compile("Hello"))
      
       // Matches second <div>
       page.getByText(Pattern.compile("^hello$", Pattern.CASE_INSENSITIVE))
       

      **Details**

      Matching by text always normalizes whitespace, even with exact match. For example, it turns multiple spaces into one, turns line breaks into spaces and ignores leading and trailing whitespace.

      Input elements of the type button and submit are matched by their value instead of the text content. For example, locating by text "Log in" matches <input type=button value="Log in">.

      Specified by:
      getByText in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByTitle

      public Locator getByTitle(String text, Locator.GetByTitleOptions options)
      Description copied from interface: Locator
      Allows locating elements by their title attribute.

      **Usage**

      Consider the following DOM structure.

      You can check the issues count after locating it by the title text:

      
       assertThat(page.getByTitle("Issues count")).hasText("25 issues");
       
      Specified by:
      getByTitle in interface Locator
      Parameters:
      text - Text to locate the element for.
    • getByTitle

      public Locator getByTitle(Pattern text, Locator.GetByTitleOptions options)
      Description copied from interface: Locator
      Allows locating elements by their title attribute.

      **Usage**

      Consider the following DOM structure.

      You can check the issues count after locating it by the title text:

      
       assertThat(page.getByTitle("Issues count")).hasText("25 issues");
       
      Specified by:
      getByTitle in interface Locator
      Parameters:
      text - Text to locate the element for.
    • highlight

      public void highlight()
      Description copied from interface: Locator
      Highlight the corresponding element(s) on the screen. Useful for debugging, don't commit the code that uses Locator.highlight().
      Specified by:
      highlight in interface Locator
    • hover

      public void hover(Locator.HoverOptions options)
      Description copied from interface: Locator
      Hover over the matching element.

      **Usage**

      
       page.getByRole(AriaRole.LINK).hover();
       

      **Details**

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

      1. Wait for actionability checks on the element, unless force option is set.
      2. Scroll the element into view if needed.
      3. Use 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.

      Specified by:
      hover in interface Locator
    • innerHTML

      public String innerHTML(Locator.InnerHTMLOptions options)
      Description copied from interface: Locator
      Returns the element.innerHTML.
      Specified by:
      innerHTML in interface Locator
    • innerText

      public String innerText(Locator.InnerTextOptions options)
      Description copied from interface: Locator
      Returns the element.innerText.

      NOTE: If you need to assert text on the page, prefer

      invalid reference
      LocatorAssertions.hasText()
      with useInnerText option to avoid flakiness. See assertions guide for more details.
      Specified by:
      innerText in interface Locator
    • inputValue

      public String inputValue(Locator.InputValueOptions options)
      Description copied from interface: Locator
      Returns the value for the matching <input> or <textarea> or <select> element.

      NOTE: If you need to assert input value, prefer

      invalid reference
      LocatorAssertions.hasValue()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       String value = page.getByRole(AriaRole.TEXTBOX).inputValue();
       

      **Details**

      Throws elements that are not an input, textarea or a select. However, if the element is inside the <label> element that has an associated control, returns the value of the control.

      Specified by:
      inputValue in interface Locator
    • isChecked

      public boolean isChecked(Locator.IsCheckedOptions options)
      Description copied from interface: Locator
      Returns whether the element is checked. Throws if the element is not a checkbox or radio input.

      NOTE: If you need to assert that checkbox is checked, prefer

      invalid reference
      LocatorAssertions.isChecked()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       boolean checked = page.getByRole(AriaRole.CHECKBOX).isChecked();
       
      Specified by:
      isChecked in interface Locator
    • isDisabled

      public boolean isDisabled(Locator.IsDisabledOptions options)
      Description copied from interface: Locator
      Returns whether the element is disabled, the opposite of enabled.

      NOTE: If you need to assert that an element is disabled, prefer

      invalid reference
      LocatorAssertions.isDisabled()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       boolean disabled = page.getByRole(AriaRole.BUTTON).isDisabled();
       
      Specified by:
      isDisabled in interface Locator
    • isEditable

      public boolean isEditable(Locator.IsEditableOptions options)
      Description copied from interface: Locator
      Returns whether the element is editable.

      NOTE: If you need to assert that an element is editable, prefer

      invalid reference
      LocatorAssertions.isEditable()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       boolean editable = page.getByRole(AriaRole.TEXTBOX).isEditable();
       
      Specified by:
      isEditable in interface Locator
    • isEnabled

      public boolean isEnabled(Locator.IsEnabledOptions options)
      Description copied from interface: Locator
      Returns whether the element is enabled.

      NOTE: If you need to assert that an element is enabled, prefer

      invalid reference
      LocatorAssertions.isEnabled()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       boolean enabled = page.getByRole(AriaRole.BUTTON).isEnabled();
       
      Specified by:
      isEnabled in interface Locator
    • isHidden

      public boolean isHidden(Locator.IsHiddenOptions options)
      Description copied from interface: Locator
      Returns whether the element is hidden, the opposite of visible.

      NOTE: If you need to assert that element is hidden, prefer

      invalid reference
      LocatorAssertions.isHidden()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       boolean hidden = page.getByRole(AriaRole.BUTTON).isHidden();
       
      Specified by:
      isHidden in interface Locator
    • isVisible

      public boolean isVisible(Locator.IsVisibleOptions options)
      Description copied from interface: Locator
      Returns whether the element is visible.

      NOTE: If you need to assert that element is visible, prefer

      invalid reference
      LocatorAssertions.isVisible()
      to avoid flakiness. See assertions guide for more details.

      **Usage**

      
       boolean visible = page.getByRole(AriaRole.BUTTON).isVisible();
       
      Specified by:
      isVisible in interface Locator
    • last

      public Locator last()
      Description copied from interface: Locator
      Returns locator to the last matching element.

      **Usage**

      
       Locator banana = page.getByRole(AriaRole.LISTITEM).last();
       
      Specified by:
      last in interface Locator
    • locator

      public Locator locator(String selector, Locator.LocatorOptions options)
      Description copied from interface: Locator
      The method finds an element matching the specified selector in the locator's subtree. It also accepts filter options, similar to Locator.filter() method.

      Learn more about locators.

      Specified by:
      locator in interface Locator
      Parameters:
      selector - A selector or locator to use when resolving DOM element.
    • locator

      public Locator locator(Locator selectorOrLocator, Locator.LocatorOptions options)
      Description copied from interface: Locator
      The method finds an element matching the specified selector in the locator's subtree. It also accepts filter options, similar to Locator.filter() method.

      Learn more about locators.

      Specified by:
      locator in interface Locator
      Parameters:
      selectorOrLocator - A selector or locator to use when resolving DOM element.
    • nth

      public Locator nth(int index)
      Description copied from interface: Locator
      Returns locator to the n-th matching element. It's zero based, nth(0) selects the first element.

      **Usage**

      
       Locator banana = page.getByRole(AriaRole.LISTITEM).nth(2);
       
      Specified by:
      nth in interface Locator
    • or

      public Locator or(Locator locator)
      Description copied from interface: Locator
      Creates a locator that matches either of the two locators.

      **Usage**

      Consider a scenario where you'd like to click on a "New email" button, but sometimes a security settings dialog shows up instead. In this case, you can wait for either a "New email" button, or a dialog and act accordingly.

      
       Locator newEmail = page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("New"));
       Locator dialog = page.getByText("Confirm security settings");
       assertThat(newEmail.or(dialog)).isVisible();
       if (dialog.isVisible())
         page.getByRole(AriaRole.BUTTON, new Page.GetByRoleOptions().setName("Dismiss")).click();
       newEmail.click();
       
      Specified by:
      or in interface Locator
      Parameters:
      locator - Alternative locator to match.
    • page

      public Page page()
      Description copied from interface: Locator
      A page this locator belongs to.
      Specified by:
      page in interface Locator
    • press

      public void press(String key, Locator.PressOptions options)
      Description copied from interface: Locator
      Focuses the matching element and presses a combination of the keys.

      **Usage**

      
       page.getByRole(AriaRole.TEXTBOX).press("Backspace");
       

      **Details**

      Focuses the element, and then uses Keyboard.down() and Keyboard.up().

      key can specify the intended keyboardEvent.key value or a single character to generate the text for. A superset of the key values can be found here. 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.

      Specified by:
      press in interface Locator
      Parameters:
      key - Name of the key to press or a character to generate, such as ArrowLeft or a.
    • pressSequentially

      public void pressSequentially(String text, Locator.PressSequentiallyOptions options)
      Description copied from interface: Locator
      NOTE: In most cases, you should use Locator.fill() instead. You only need to press keys one by one if there is special keyboard handling on the page.

      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 Locator.press().

      **Usage**

      
       locator.pressSequentially("Hello"); // Types instantly
       locator.pressSequentially("World", new Locator.pressSequentiallyOptions().setDelay(100)); // Types slower, like a user
       

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

      
       Locator locator = page.getByLabel("Password");
       locator.pressSequentially("my password");
       locator.press("Enter");
       
      Specified by:
      pressSequentially in interface Locator
      Parameters:
      text - String of characters to sequentially press into a focused element.
    • screenshot

      public byte[] screenshot(Locator.ScreenshotOptions options)
      Description copied from interface: Locator
      Take a screenshot of the element matching the locator.

      **Usage**

      
       page.getByRole(AriaRole.LINK).screenshot();
       

      Disable animations and save screenshot to a file:

      
       page.getByRole(AriaRole.LINK).screenshot(new Locator.ScreenshotOptions()
           .setAnimations(ScreenshotAnimations.DISABLED)
           .setPath(Paths.get("example.png")));
       

      **Details**

      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 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.

      Specified by:
      screenshot in interface Locator
    • scrollIntoViewIfNeeded

      public void scrollIntoViewIfNeeded(Locator.ScrollIntoViewIfNeededOptions options)
      Description copied from interface: Locator
      This method waits for actionability checks, then tries to scroll element into view, unless it is completely visible as defined by IntersectionObserver's ratio.
      Specified by:
      scrollIntoViewIfNeeded in interface Locator
    • selectOption

      public List<String> selectOption(String values, Locator.SelectOptionOptions options)
      Description copied from interface: Locator
      Selects option or options in <select>.

      **Details**

      This method waits for actionability 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, 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.

      **Usage**

      
       // single selection matching the value or label
       element.selectOption("blue");
       // single selection matching the label
       element.selectOption(new SelectOption().setLabel("Blue"));
       // multiple selection for blue, red and second option
       element.selectOption(new String[] {"red", "green", "blue"});
       
      Specified by:
      selectOption in interface Locator
      Parameters:
      values - Options to select. If the <select> has the multiple attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.
    • selectOption

      public List<String> selectOption(ElementHandle values, Locator.SelectOptionOptions options)
      Description copied from interface: Locator
      Selects option or options in <select>.

      **Details**

      This method waits for actionability 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, 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.

      **Usage**

      
       // single selection matching the value or label
       element.selectOption("blue");
       // single selection matching the label
       element.selectOption(new SelectOption().setLabel("Blue"));
       // multiple selection for blue, red and second option
       element.selectOption(new String[] {"red", "green", "blue"});
       
      Specified by:
      selectOption in interface Locator
      Parameters:
      values - Options to select. If the <select> has the multiple attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.
    • selectOption

      public List<String> selectOption(String[] values, Locator.SelectOptionOptions options)
      Description copied from interface: Locator
      Selects option or options in <select>.

      **Details**

      This method waits for actionability 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, 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.

      **Usage**

      
       // single selection matching the value or label
       element.selectOption("blue");
       // single selection matching the label
       element.selectOption(new SelectOption().setLabel("Blue"));
       // multiple selection for blue, red and second option
       element.selectOption(new String[] {"red", "green", "blue"});
       
      Specified by:
      selectOption in interface Locator
      Parameters:
      values - Options to select. If the <select> has the multiple attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.
    • selectOption

      public List<String> selectOption(SelectOption values, Locator.SelectOptionOptions options)
      Description copied from interface: Locator
      Selects option or options in <select>.

      **Details**

      This method waits for actionability 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, 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.

      **Usage**

      
       // single selection matching the value or label
       element.selectOption("blue");
       // single selection matching the label
       element.selectOption(new SelectOption().setLabel("Blue"));
       // multiple selection for blue, red and second option
       element.selectOption(new String[] {"red", "green", "blue"});
       
      Specified by:
      selectOption in interface Locator
      Parameters:
      values - Options to select. If the <select> has the multiple attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.
    • selectOption

      public List<String> selectOption(ElementHandle[] values, Locator.SelectOptionOptions options)
      Description copied from interface: Locator
      Selects option or options in <select>.

      **Details**

      This method waits for actionability 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, 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.

      **Usage**

      
       // single selection matching the value or label
       element.selectOption("blue");
       // single selection matching the label
       element.selectOption(new SelectOption().setLabel("Blue"));
       // multiple selection for blue, red and second option
       element.selectOption(new String[] {"red", "green", "blue"});
       
      Specified by:
      selectOption in interface Locator
      Parameters:
      values - Options to select. If the <select> has the multiple attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.
    • selectOption

      public List<String> selectOption(SelectOption[] values, Locator.SelectOptionOptions options)
      Description copied from interface: Locator
      Selects option or options in <select>.

      **Details**

      This method waits for actionability 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, 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.

      **Usage**

      
       // single selection matching the value or label
       element.selectOption("blue");
       // single selection matching the label
       element.selectOption(new SelectOption().setLabel("Blue"));
       // multiple selection for blue, red and second option
       element.selectOption(new String[] {"red", "green", "blue"});
       
      Specified by:
      selectOption in interface Locator
      Parameters:
      values - Options to select. If the <select> has the multiple attribute, all matching options are selected, otherwise only the first option matching one of the passed options is selected. String values are matching both values and labels. Option is considered matching if all specified properties match.
    • selectText

      public void selectText(Locator.SelectTextOptions options)
      Description copied from interface: Locator
      This method waits for actionability checks, then focuses the element and selects all its text content.

      If the element is inside the <label> element that has an associated control, focuses and selects text in the control instead.

      Specified by:
      selectText in interface Locator
    • setChecked

      public void setChecked(boolean checked, Locator.SetCheckedOptions options)
      Description copied from interface: Locator
      Set the state of a checkbox or a radio element.

      **Usage**

      
       page.getByRole(AriaRole.CHECKBOX).setChecked(true);
       

      **Details**

      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 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 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.

      Specified by:
      setChecked in interface Locator
      Parameters:
      checked - Whether to check or uncheck the checkbox.
    • setInputFiles

      public void setInputFiles(Path files, Locator.SetInputFilesOptions options)
      Description copied from interface: Locator
      Upload file or multiple files into <input type=file>.

      **Usage**

      
       // Select one file
       page.getByLabel("Upload file").setInputFiles(Paths.get("myfile.pdf"));
      
       // Select multiple files
       page.getByLabel("Upload files").setInputFiles(new Path[] {Paths.get("file1.txt"), Paths.get("file2.txt")});
      
       // Remove all the selected files
       page.getByLabel("Upload file").setInputFiles(new Path[0]);
      
       // Upload buffer from memory
       page.getByLabel("Upload file").setInputFiles(new FilePayload(
         "file.txt", "text/plain", "this is test".getBytes(StandardCharsets.UTF_8)));
       

      **Details**

      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. However, if the element is inside the <label> element that has an associated control, targets the control instead.

      Specified by:
      setInputFiles in interface Locator
    • setInputFiles

      public void setInputFiles(Path[] files, Locator.SetInputFilesOptions options)
      Description copied from interface: Locator
      Upload file or multiple files into <input type=file>.

      **Usage**

      
       // Select one file
       page.getByLabel("Upload file").setInputFiles(Paths.get("myfile.pdf"));
      
       // Select multiple files
       page.getByLabel("Upload files").setInputFiles(new Path[] {Paths.get("file1.txt"), Paths.get("file2.txt")});
      
       // Remove all the selected files
       page.getByLabel("Upload file").setInputFiles(new Path[0]);
      
       // Upload buffer from memory
       page.getByLabel("Upload file").setInputFiles(new FilePayload(
         "file.txt", "text/plain", "this is test".getBytes(StandardCharsets.UTF_8)));
       

      **Details**

      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. However, if the element is inside the <label> element that has an associated control, targets the control instead.

      Specified by:
      setInputFiles in interface Locator
    • setInputFiles

      public void setInputFiles(FilePayload files, Locator.SetInputFilesOptions options)
      Description copied from interface: Locator
      Upload file or multiple files into <input type=file>.

      **Usage**

      
       // Select one file
       page.getByLabel("Upload file").setInputFiles(Paths.get("myfile.pdf"));
      
       // Select multiple files
       page.getByLabel("Upload files").setInputFiles(new Path[] {Paths.get("file1.txt"), Paths.get("file2.txt")});
      
       // Remove all the selected files
       page.getByLabel("Upload file").setInputFiles(new Path[0]);
      
       // Upload buffer from memory
       page.getByLabel("Upload file").setInputFiles(new FilePayload(
         "file.txt", "text/plain", "this is test".getBytes(StandardCharsets.UTF_8)));
       

      **Details**

      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. However, if the element is inside the <label> element that has an associated control, targets the control instead.

      Specified by:
      setInputFiles in interface Locator
    • setInputFiles

      public void setInputFiles(FilePayload[] files, Locator.SetInputFilesOptions options)
      Description copied from interface: Locator
      Upload file or multiple files into <input type=file>.

      **Usage**

      
       // Select one file
       page.getByLabel("Upload file").setInputFiles(Paths.get("myfile.pdf"));
      
       // Select multiple files
       page.getByLabel("Upload files").setInputFiles(new Path[] {Paths.get("file1.txt"), Paths.get("file2.txt")});
      
       // Remove all the selected files
       page.getByLabel("Upload file").setInputFiles(new Path[0]);
      
       // Upload buffer from memory
       page.getByLabel("Upload file").setInputFiles(new FilePayload(
         "file.txt", "text/plain", "this is test".getBytes(StandardCharsets.UTF_8)));
       

      **Details**

      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. However, if the element is inside the <label> element that has an associated control, targets the control instead.

      Specified by:
      setInputFiles in interface Locator
    • tap

      public void tap(Locator.TapOptions options)
      Description copied from interface: Locator
      Perform a tap gesture on the element matching the locator.

      **Details**

      This method taps the element by performing the following steps:

      1. Wait for actionability checks on the element, unless force option is set.
      2. Scroll the element into view if needed.
      3. Use 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.

      Specified by:
      tap in interface Locator
    • textContent

      public String textContent(Locator.TextContentOptions options)
      Description copied from interface: Locator
      Returns the node.textContent.

      NOTE: If you need to assert text on the page, prefer

      invalid reference
      LocatorAssertions.hasText()
      to avoid flakiness. See assertions guide for more details.
      Specified by:
      textContent in interface Locator
    • type

      public void type(String text, Locator.TypeOptions options)
      Specified by:
      type in interface Locator
      Parameters:
      text - A text to type into a focused element.
    • uncheck

      public void uncheck(Locator.UncheckOptions options)
      Description copied from interface: Locator
      Ensure that checkbox or radio element is unchecked.

      **Usage**

      
       page.getByRole(AriaRole.CHECKBOX).uncheck();
       

      **Details**

      This method unchecks 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 checks on the element, unless force option is set.
      3. Scroll the element into view if needed.
      4. Use 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.

      Specified by:
      uncheck in interface Locator
    • waitFor

      public void waitFor(Locator.WaitForOptions options)
      Description copied from interface: Locator
      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.

      **Usage**

      
       Locator orderSent = page.locator("#order-sent");
       orderSent.waitFor();
       
      Specified by:
      waitFor in interface Locator
    • waitForImpl

      private void waitForImpl(Locator.WaitForOptions options)
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • expect

      FrameExpectResult expect(String expression, FrameExpectOptions options)
    • toProtocol

      com.google.gson.JsonObject toProtocol()
    • expectImpl

      private FrameExpectResult expectImpl(String expression, FrameExpectOptions options)