木偶如何从窗口范围获取变量

时间:2018-12-13 17:58:39

标签: javascript puppeteer

我想使用评估函数从窗口范围获取对象。这是我的代码。

这是窗口范围内的变量。

let testCase = JSON.stringify({foo: bar});

这是我用来从testCase变量获取值的木偶代码。

console.log(await page.evaluate(() => testCase));

输出:

undefined

我知道必须伪造puppeteer的评估函数参数,这就是为什么我使用Json.stringify()的原因,但仍然无法正常工作!

我们非常感谢您的帮助。谢谢。

1 个答案:

答案 0 :(得分:2)

强烈建议在调试无头脚本时注意错误-制作屏幕截图,等待必要的元素出现以及从页面上下文中捕获js错误,例如:

page.on('pageerror', err => console.log(err));

有了此回调,就清楚了为什么结果是undefined

  

[错误:ReferenceError:栏未定义

似乎bar变量未在目标页面上定义,因此无法对testCase进行赋值,因此它保持未定义状态。

或者,如果您确定确实定义了bar,则可能是在页面生命周期中稍后创建的,而在 之后,您正在执行{{1} }。在这种情况下,您需要使用page.waitFor来等待它:

page.evaluate