Por que não consigo acessar 'janela' em uma função exposeFunction () com o Puppeteer?
Eu tenho um muito simplesMarionetista script que usaexposeFunction()
para executar algo dentro do Chrome sem cabeça.
(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();
})()
Isso falha com:
ReferenceError: window is not defined
Que se refere à função injetada. Como posso acessarwindow
dentro do Chrome sem cabeça?
Eu sei que posso fazerevaluate()
em vez disso, mas isso não funciona com uma função que passo dinamicamente:
(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();
})()