作为 google puppeteer 上 evaluate 方法的参数

function as argument on evaluate method on google puppeteer

我想运行 evaluate() 中的一个函数,我将它作为参数传递,但我得到 'func is not a function',我错过了什么?

人偶版本:10.2

平台/OS版本:Windows10,节点 8.2.1

var func = function() {
   console.log("xxxxx");
};

var response = await page.evaluate( (func) => {
   func(); //func is not a function
}, func);

如果我理解正确的话,puppeteer 必须最终将求值函数中的代码编组为字符串并将其注入到页面上下文中。您不能跨该边界传递函数引用或任何不可序列化的内容。

您可以使用 page.exposeFunction(name, puppeteerFunction):

await page.exposeFunction("add", (a, b) => a + b);
const response = await page.evaluate(() => {
   return window.add(2, 2);
});