diff --git a/types/puppeteer/index.d.ts b/types/puppeteer/index.d.ts index b89d41bbba..84dfa8bc99 100644 --- a/types/puppeteer/index.d.ts +++ b/types/puppeteer/index.d.ts @@ -675,7 +675,7 @@ export interface FrameBase { */ $eval( selector: string, - fn: (element: ElementHandle | null, ...args: any[]) => any, + pageFunction: (element: Element, ...args: any[]) => any, ...args: any[] ): Promise; @@ -689,7 +689,7 @@ export interface FrameBase { */ $$eval( selector: string, - fn: (elements: ElementHandle[], ...args: any[]) => any, + pageFunction: (elements: NodeListOf, ...args: any[]) => any, ...args: any[] ): Promise; diff --git a/types/puppeteer/puppeteer-tests.ts b/types/puppeteer/puppeteer-tests.ts index d8bb2b4229..913d46a789 100644 --- a/types/puppeteer/puppeteer-tests.ts +++ b/types/puppeteer/puppeteer-tests.ts @@ -263,3 +263,21 @@ puppeteer.launch().then(async browser => { browser.close(); })(); + +// test $eval and $$eval +(async () => { + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + await page.goto("https://example.com"); + let elementText = await page.$eval('#someElement', (element) => { + return element.innerHTML; + }); + + elementText = await page.$$eval('.someClassName', (elements) => { + console.log(elements.length); + console.log(elements.item(0).outerHTML); + return elements[3].innerHTML; + }); + + browser.close(); +})();