相关疑难解决方法(0)

为什么我不能在使用Puppeteer的exposeFunction()函数中访问'window'?

我有一个非常简单的Puppeteer脚本,用于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();

})()
Run Code Online (Sandbox Code Playgroud)

这失败了:

ReferenceError: window is not defined
Run Code Online (Sandbox Code Playgroud)

其中指的是注入的功能.如何window在无头Chrome内部进行访问?

我知道我可以做evaluate(),但这不适用于我动态传递的函数:

(async function(){

    var log = console.log.bind(console),
        puppeteer = require('puppeteer');

    const browser = await puppeteer.launch(); …
Run Code Online (Sandbox Code Playgroud)

google-chrome node.js headless-browser puppeteer

7
推荐指数
2
解决办法
5036
查看次数

如何在chrome headless + puppeteer evaluate()中使用xpath?

我如何在一个内部$x()使用xpath表达式page.evaluate()

至于page不在相同的上下文中,我$x()直接尝试(就像我在chrome开发工具中所做的那样),但没有雪茄.

脚本进入超时状态.

javascript xpath google-chrome puppeteer

6
推荐指数
2
解决办法
1万
查看次数