Привет, я столкнулся с той же проблемой, и мне было интересно, если вам удалось найти лучшее решение, чем page.evaluate?
я очень простокукольник скрипт, который используетexposeFunction()
запустить что-то внутри безголового Chrome.
(async function(){
var log = console.log.bind(console),
puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
const page = await browser.newPage();
var functionToInject = function(){
return window.navigator.appName;
}
await page.exposeFunction('functionToInject', functionToInject);
var data = await page.evaluate(async function(){
console.log('woo I run inside a browser')
return await functionToInject();
});
console.log(data);
await browser.close();
})()
Это не с:
ReferenceError: window is not defined
Который относится к введенной функции. Как я могу получить доступwindow
внутри безголового Chrome?
Я знаю, что могу сделатьevaluate()
вместо этого, но это не работает с функцией, которую я передаю динамически:
(async function(){
var log = console.log.bind(console),
puppeteer = require('puppeteer');
const browser = await puppeteer.launch();
const page = await browser.newPage();
var data = await page.evaluate(async function(){
console.log('woo I run inside a browser')
return window.navigator.appName;
});
console.log(data);
await browser.close();
})()