mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
* feat(types): add types for `page.$$eval` * Add new-docs for $$eval * fix example * linting
1.6 KiB
1.6 KiB
Home > puppeteer > 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:
$$eval<ReturnType>(selector: string, pageFunction: (elements: Element[], ...args: unknown[]) => ReturnType | Promise<ReturnType>, ...args: SerializableOrJSHandle[]): Promise<WrapElementHandle<ReturnType>>;
Parameters
| Parameter | Type | Description |
|---|---|---|
| selector | string | |
| pageFunction | (elements: Element[], ...args: unknown[]) => ReturnType | Promise<ReturnType> | |
| args | SerializableOrJSHandle[] |
Returns:
Promise<WrapElementHandle<ReturnType>>
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!']);