Skip to main content
Version: 18.0.5

ElementHandle.$eval() method

Runs the given function on the first element matching the given selector in the current element.

If the given function returns a promise, then this method will wait till the promise resolves.


class ElementHandle {
Selector extends string,
Params extends unknown[],
Func extends EvaluateFunc<
[ElementHandle<NodeFor<Selector>>, ...Params]
> = EvaluateFunc<[ElementHandle<NodeFor<Selector>>, ...Params]>
selector: Selector,
pageFunction: Func | string,
...args: Params
): Promise<Awaited<ReturnType<Func>>>;


selectorSelectorThe selector to query for.
pageFunctionFunc | stringThe function to be evaluated in this element's page's context. The first element matching the selector will be passed in as the first argument.
argsParamsAdditional arguments to pass to pageFunction.



A promise to the result of the function.


const tweetHandle = await page.$('.tweet');
expect(await tweetHandle.$eval('.like', node => node.innerText)).toBe('100');
expect(await tweetHandle.$eval('.retweets', node => node.innerText)).toBe('10');