我想在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);
答案 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函数中的代码编组为一个字符串并将其注入页面上下文。您无法在该边界传递函数引用或任何不可序列化的内容。