我希望有人可以指引我正确的方向,我试图通过Puppeteer在页面上检索对象。
如果我在Web控制台中键入以下内容,它将起作用:
eval('__object.client[0]');
如果我尝试在Puppeteer中执行以下操作,这将很好地工作:
await page.exposeFunction('findPath', (search) => {
console.log(eval('__object.client[0]'));
});
它不检索对象,而是检索字符串。
我做错了什么?
谢谢。
答案 0 :(得分:0)
我认为您必须记住一些概念:
exposeFunction
将不会执行该功能。它将注册该功能,因此您可以随后在浏览器上下文中调用findPath(foo)
。
您在公开函数中运行的代码将在您的应用程序上下文中运行。因此eval
在那里将无法使用。
evaluate
应该为您完成工作:
console.log(await page.evaluate(() => {
return eval('document.title');
}));
使用evaluate
时必须记住,代码将在浏览器上下文中执行。因此,您将不会在应用程序端读取任何控制台日志(除非您监听日志事件)。