Locator
Locator represents a query for elements. Created via page.locator(), it is lazy — it resolves the selector on each action, not at creation time.
const button = page.locator("role:button[name='Submit']");await button.click();Methods
Section titled “Methods”| Method | Signature |
|---|---|
getPage |
getPage(): Page |
resolveSelector |
resolveSelector(): Promise<string> |
waitForVisible |
waitForVisible(opts?: { timeout?: number; }): Promise<this> |
waitForEnabled |
waitForEnabled(opts?: { timeout?: number; }): Promise<this> |
click |
click(opts?: { timeout?: number; }): Promise<void> |
dblClick |
dblClick(opts?: { timeout?: number; }): Promise<void> |
type |
type(text: string, opts?: { timeout?: number; }): Promise<void> |
fill |
fill(text: string): Promise<void> |
press |
press(key: string, modifiers?: Bun.WebView.Modifier[]): Promise<void> |
screenshot |
screenshot(opts?: { path?: string; }): Promise<void> |
evaluate<T> |
evaluate<T>(fn: (el: Element) => T): Promise<T> |
innerText |
innerText(): Promise<string> |
innerHTML |
innerHTML(): Promise<string> |
getAttribute |
getAttribute(name: string): Promise<string | null> |
isVisible |
isVisible(): Promise<boolean> |
isEnabled |
isEnabled(): Promise<boolean> |
isChecked |
isChecked(): Promise<boolean> |
filter |
filter(sel: Selector): Locator |
first |
first(): Locator |
last |
last(): Locator |
nth |
nth(index: number): Locator |
count |
count(): Promise<number> |
toElement |
toElement(): Promise<ElementHandle> |
Actions
Section titled “Actions”const submit = page.locator("role:button[name='Submit']");
await submit.click();await submit.dblClick();await submit.type("Hello");await submit.fill("Replaced text"); // clears firstawait submit.press("Enter");await submit.screenshot({ path: "./element.png" });Reading
Section titled “Reading”const text = await submit.innerText();const html = await submit.innerHTML();const value = await submit.getAttribute("value");const count = await submit.count();const visible = await submit.isVisible(); // booleanconst enabled = await submit.isEnabled(); // booleanconst checked = await submit.isChecked(); // booleanNarrowing
Section titled “Narrowing”const items = page.locator("css:li");
await items.first().click();await items.last().click();await items.nth(2).click();await items.filter("css:.active").click();await items.toElement(); // returns an ElementHandlefilter() returns a new Locator with an additional selector. first(), last(), and nth() return Locator subclasses that resolve to a specific index.
Waiting
Section titled “Waiting”await submit.waitForVisible({ timeout: 5000 });await submit.waitForEnabled({ timeout: 5000 });