--- sidebar_label: ElementHandle.$$eval --- # ElementHandle.$$eval() method Runs the given function on an array of elements matching the given selector in the current element. If the given function returns a promise, then this method will wait till the promise resolves. **Signature:** ```typescript class ElementHandle { $$eval< Selector extends string, Params extends unknown[], Func extends EvaluateFunc< [Array>, ...Params] > = EvaluateFunc<[Array>, ...Params]> >( selector: Selector, pageFunction: Func | string, ...args: Params ): Promise>>; } ``` ## Parameters | Parameter | Type | Description | | ------------ | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | selector | Selector | The selector to query for. | | pageFunction | Func \| string | The function to be evaluated in the element's page'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 HTML: ```html
Hello!
Hi!
``` JavaScript: ```js const feedHandle = await page.$('.feed'); expect( await feedHandle.$$eval('.tweet', nodes => nodes.map(n => n.innerText)) ).toEqual(['Hello!', 'Hi!']); ```