作为google puppeteer评估方法的参数

时间:2017-09-11 20:11:31

标签: javascript node.js puppeteer

我想在evaluate()中运行一个函数,我将它作为参数传递,但是我得到'func不是函数',我缺少什么?

Puppeteer版本:10.2

平台/操作系统版本:Windows 10,节点8.2.1

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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