¿Por qué no puedo acceder a 'window' en una función exposeFunction () con Puppeteer?
Tengo un muy simpleTitiritero script que usaexposeFunction()
ejecutar algo dentro de Chrome sin cabeza.
(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();
})()
Esto falla con:
ReferenceError: window is not defined
Que se refiere a la función inyectada. ¿Cómo puedo acceder?window
dentro del Chrome sin cabeza?
Se que puedo hacerevaluate()
en cambio, pero esto no funciona con una función que paso dinámicamente:
(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();
})()