我想使用评估函数从窗口范围获取对象。这是我的代码。
这是窗口范围内的变量。
let testCase = JSON.stringify({foo: bar});
这是我用来从testCase变量获取值的木偶代码。
console.log(await page.evaluate(() => testCase));
输出:
undefined
我知道必须伪造puppeteer的评估函数参数,这就是为什么我使用Json.stringify()的原因,但仍然无法正常工作!
我们非常感谢您的帮助。谢谢。
答案 0 :(得分:2)
强烈建议在调试无头脚本时注意错误-制作屏幕截图,等待必要的元素出现以及从页面上下文中捕获js错误,例如:
page.on('pageerror', err => console.log(err));
有了此回调,就清楚了为什么结果是undefined
:
[错误:ReferenceError:栏未定义
似乎bar
变量未在目标页面上定义,因此无法对testCase
进行赋值,因此它保持未定义状态。
或者,如果您确定确实定义了bar
,则可能是在页面生命周期中稍后创建的,而在 之后,您正在执行{{1} }。在这种情况下,您需要使用page.waitFor来等待它:
page.evaluate