puppeteer/docs/api/puppeteer.elementhandle.__eval.md
2022-07-01 11:52:39 +00:00

1.4 KiB

sidebar_label
ElementHandle.$$eval

ElementHandle.$$eval() method

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.

Signature:

class ElementHandle {
  $$eval<
    Selector extends keyof HTMLElementTagNameMap,
    Params extends unknown[],
    Func extends EvaluateFunc<
      [HTMLElementTagNameMap[Selector][], ...Params]
    > = EvaluateFunc<[HTMLElementTagNameMap[Selector][], ...Params]>
  >(
    selector: Selector,
    pageFunction: Func | string,
    ...args: Params
  ): Promise<Awaited<ReturnType<Func>>>;
}

Parameters

Parameter Type Description
selector Selector
pageFunction Func | string
args Params

Returns:

Promise<Awaited<ReturnType<Func>>>

Example 1

<div class="feed">
  <div class="tweet">Hello!</div>
  <div class="tweet">Hi!</div>
</div>

Example 2

const feedHandle = await page.$('.feed');
expect(
  await feedHandle.$$eval('.tweet', nodes => nodes.map(n => n.innerText))
).toEqual(['Hello!', 'Hi!']);