Returns locator to the first matching frame.
When working with iframes, you can create a frame locator that will enter the iframe and allow selecting elements in that iframe.
A selector to use when resolving DOM element.
Allows locating elements by their alt text. For example, this method will find the image by alt text "Castle":
<img alt='Castle'>
Text to locate the element for.
Optional
options: { Optional
exact?: booleanWhether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a regular expression. Note that exact match still trims whitespace.
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:
<label for="password-input">Password:</label>
<input id="password-input">
Text to locate the element for.
Optional
options: { Optional
exact?: booleanWhether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a regular expression. Note that exact match still trims whitespace.
Allows locating input elements by the placeholder text. For example, this method will find the input by placeholder "Country":
<input placeholder="Country">
Text to locate the element for.
Optional
options: { Optional
exact?: booleanWhether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a regular expression. Note that exact match still trims whitespace.
Allows locating elements by their ARIA role, ARIA attributes and 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 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.
Required aria role.
Optional
options: { Optional
checked?: booleanAn attribute that is usually set by aria-checked
or native <input type=checkbox>
controls.
Learn more about aria-checked
.
Optional
disabled?: booleanAn attribute that is usually set by aria-disabled
or disabled
.
NOTE Unlike most other attributes, disabled
is inherited through the DOM hierarchy. Learn more about
aria-disabled
.
Optional
exact?: booleanWhether name
is matched exactly: case-sensitive and whole-string. Defaults to false. Ignored when name
is a
regular expression. Note that exact match still trims whitespace.
Optional
expanded?: booleanAn attribute that is usually set by aria-expanded
.
Learn more about aria-expanded
.
Optional
includeOption that controls whether hidden elements are matched. By default, only non-hidden elements, as defined by ARIA, are matched by role selector.
Learn more about aria-hidden
.
Optional
level?: numberA number attribute that is usually present for roles heading
, listitem
, row
, treeitem
, with default values
for <h1>-<h6>
elements.
Learn more about aria-level
.
Optional
name?: string | RegExpOption to match the accessible name. By default, matching is
case-insensitive and searches for a substring, use exact
to control this behavior.
Learn more about accessible name.
Optional
pressed?: booleanAn attribute that is usually set by aria-pressed
.
Learn more about aria-pressed
.
Optional
selected?: booleanAn attribute that is usually set by aria-selected
.
Learn more about aria-selected
.
Locate element by the test id. By default, the data-testid
attribute is used as a test id. Use
selectors.setTestIdAttribute(attributeName)
to configure a different test id attribute if necessary.
// Set custom test id attribute from @playwright/test config:
use: {
testIdAttribute: 'data-pw'
}
Id to locate the element by.
Allows locating elements that contain given text. Consider the following DOM structure:
<div>Hello <span>world</span></div>
<div>Hello</div>
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', { exact: true })
// Matches both <div>s
page.getByText(/Hello/)
// Matches second <div>
page.getByText(/^hello$/i)
See also locator.filter([options]) that allows to match by another criteria, like an accessible role, and then filter by the text content.
NOTE 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.
NOTE 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">
.
Text to locate the element for.
Optional
options: { Optional
exact?: booleanWhether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a regular expression. Note that exact match still trims whitespace.
Allows locating elements by their title. For example, this method will find the button by its title "Place the order":
<button title='Place the order'>Order Now</button>
Text to locate the element for.
Optional
options: { Optional
exact?: booleanWhether to find an exact match: case-sensitive and whole-string. Default to false. Ignored when locating by a regular expression. Note that exact match still trims whitespace.
Returns locator to the last matching frame.
The method finds an element matching the specified selector in the locator's subtree. It also accepts filter options, similar to locator.filter([options]) method.
A selector to use when resolving DOM element.
Optional
options: { Optional
has?: LocatorMatches elements containing an element that matches an inner locator. Inner locator is queried against the outer
one. For example, article
that has text=Playwright
matches <article><div>Playwright</div></article>
.
Note that outer and inner locators must belong to the same frame. Inner locator must not contain [FrameLocator]s.
Optional
hasMatches elements containing specified text somewhere inside, possibly in a child or a descendant element. When
passed a [string], matching is case-insensitive and searches for a substring. For example, "Playwright"
matches
<article><div>Playwright</div></article>
.
Returns locator to the n-th matching frame. It's zero based, nth(0)
selects the first frame.
Generated using TypeDoc
FrameLocator represents a view to the
iframe
on the page. It captures the logic sufficient to retrieve theiframe
and locate elements in that iframe. FrameLocator can be created with either page.frameLocator(selector) or locator.frameLocator(selector) method.Strictness
Frame locators are strict. This means that all operations on frame locators will throw if more than one element matches a given selector.
Converting Locator to FrameLocator
If you have a [Locator] object pointing to an
iframe
it can be converted to [FrameLocator] using:scope
CSS selector: