Skip to main content
Deno 2 is finally here 🎉️
Learn more
Module

x/pptr/mod.ts>ElementHandle

Headless Chrome Deno API
Latest
class ElementHandle
extends JSHandle
Re-export
import { ElementHandle } from "https://deno.land/x/pptr@1.2.0/mod.ts";

ElementHandle represents an in-page DOM element.

Constructors

new
ElementHandle(
client: CDPSession,
page: Page,
frameManager: FrameManager,
)

Type Parameters

optional
ElementType extends Element = Element

Properties

private
_frameManager: FrameManager
private
_page: Page

Methods

private
_clickablePoint(): Promise<{ x: number; y: number; }>
private
_fromProtocolQuad(quad: number[]): Array<{ x: number; y: number; }>
private
_intersectQuadWithViewport(
quad: Array<{ x: number; y: number; }>,
width: number,
height: number,
): Array<{ x: number; y: number; }>
private
_scrollIntoViewIfNeeded(): Promise<void>
$(selector: string): Promise<ElementHandle | null>

Runs element.querySelector within the page. If no element matches the selector, the return value resolves to null.

$$(selector: string): Promise<ElementHandle[]>

Runs element.querySelectorAll within the page. If no elements match the selector, the return value resolves to [].

$$eval<ReturnType>(
selector: string,
pageFunction: (elements: Element[], ...args: unknown[]) => ReturnType | Promise<ReturnType>,
): Promise<WrapElementHandle<ReturnType>>

This method runs document.querySelectorAll within the element and passes it as the first argument to pageFunction. If there's no element matching selector, the method throws an error.

If pageFunction returns a Promise, then frame.$$eval would wait for the promise to resolve and return its value.

$eval<ReturnType>(
selector: string,
pageFunction: (element: Element, ...args: unknown[]) => ReturnType | Promise<ReturnType>,
): Promise<WrapElementHandle<ReturnType>>

This method runs document.querySelector within the element and passes it as the first argument to pageFunction. If there's no element matching selector, the method throws an error.

If pageFunction returns a Promise, then frame.$eval would wait for the promise to resolve and return its value.

$x(expression: string): Promise<ElementHandle[]>

The method evaluates the XPath expression relative to the elementHandle. If there are no such elements, the method will resolve to an empty array.

boundingBox(): Promise<BoundingBox | null>

This method returns the bounding box of the element (relative to the main frame), or null if the element is not visible.

boxModel(): Promise<BoxModel | null>

This method returns boxes of the element, or null if the element is not visible.

click(options?: ClickOptions): Promise<void>

This method scrolls element into view if needed, and then uses Page.mouse to click in the center of the element. If the element is detached from DOM, the method throws an error.

contentFrame(): Promise<Frame | null>

Resolves to the content frame for element handles referencing iframe nodes, or null otherwise

focus(): Promise<void>

Calls focus on the element.

hover(): Promise<void>

This method scrolls element into view if needed, and then uses Page.mouse to hover over the center of the element. If the element is detached from DOM, the method throws an error.

isIntersectingViewport(): Promise<boolean>

Resolves to true if the element is visible in the current viewport.

press(key: KeyInput, options?: PressOptions): Promise<void>

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

screenshot(options?): Promise<string | Uint8Array | void>

This method scrolls element into view if needed, and then uses Page.screenshot to take a screenshot of the element. If the element is detached from DOM, the method throws an error.

select(...values: string[]): Promise<string[]>

Triggers a change and input event once all the provided options have been selected. If there's no <select> element matching selector, the method throws an error.

tap(): Promise<void>

This method scrolls element into view if needed, and then uses Touchscreen.tap to tap in the center of the element. If the element is detached from DOM, the method throws an error.

type(text: string, options?: { delay: number; }): Promise<void>

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

uploadFile(...filePaths: string[]): Promise<void>

This method expects elementHandle to point to an input element.