--- sidebar_label: Frame.$$eval --- # Frame.$$eval() method Runs the given function on an array of elements matching the given selector in the frame. If the given function returns a promise, then this method will wait till the promise resolves. #### Signature: ```typescript class Frame { $$eval< Selector extends string, Params extends unknown[], Func extends EvaluateFuncWith< Array>, Params > = EvaluateFuncWith>, Params>, >( selector: Selector, pageFunction: string | Func, ...args: Params ): Promise>>; } ``` ## Parameters
Parameter Type Description
selector Selector [selector](https://pptr.dev/guides/page-interactions#query-selectors) to query page for. [CSS selectors](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Selectors) can be passed as-is and a [Puppeteer-specific seletor syntax](https://pptr.dev/guides/page-interactions#p-selectors) allows quering by [text](https://pptr.dev/guides/page-interactions#text-selectors--p-text), [a11y role and name](https://pptr.dev/guides/page-interactions#aria-selectors--p-aria), and [xpath](https://pptr.dev/guides/page-interactions#xpath-selectors--p-xpath) and [combining these queries across shadow roots](https://pptr.dev/guides/page-interactions#-and--combinators). Alternatively, you can specify a selector type using a prefix [prefix](https://pptr.dev/guides/page-interactions#built-in-selectors).
pageFunction string \| Func The function to be evaluated in the frame's context. An array of elements matching the given selector will be passed to the function as its first argument.
args Params Additional arguments to pass to `pageFunction`.
**Returns:** Promise<Awaited<ReturnType<Func>>> A promise to the result of the function. ## Example ```ts const divsCounts = await frame.$$eval('div', divs => divs.length); ```