document.querySelectorAll(\'.summary\').innerText;
this throws error in below snippet saying \"document.querySelector is not a function\" in my pup
I just had the same question. The problem is that the page.evaluate()
function callback has to be an async
function and your function docTest()
will return a Promise
when called inside the page.evaluate()
. To fix it, just add the async
and await
keywords to your code:
await page.exposeFunction('docTest', docTest);
var result = await page.evaluate(async () => {
var summary = await docTest(document);
console.log(summary);
return summary;
});
Just remember that page.exposeFunction()
will make your function return a Promise
, then, you need to use async
and await
. This happens because your function will not be running inside your browser, but inside your nodejs
application.