Привет, я столкнулся с той же проблемой, и мне было интересно, если вам удалось найти лучшее решение, чем 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();

})()

Ответы на вопрос(2)

Ваш ответ на вопрос