首页 > 解决方案 > Puppeteer console.log - 如何查看 JSHandle@object 内部?

问题描述

我有一个使用 Puppeteer 测试的 React/Redux 应用程序。根据文档,我使用以下代码来显示控制台输出:

page.on('console', msg => {
    for(let i = 0; i < msg.args().length; ++i) {
        let text = msg.args()[i];
        console.log(`${i}: ${text}`);
    }
});

但是,当 redux-logger 将对象记录到控制台(prevState,nextState)时,Puppeeter 会显示JSHandle@object在我的控制台输出中。如何查看此对象内的键和属性?

标签: javascriptreactjstestingreduxpuppeteer

解决方案


如果您consoleMessage.args()直接将它们放在内部console.log()而不将它们包含在模板文字中,则可以打印JSHandles的键和值,这些键和值表示console.log()在页面上下文中传递给的每个参数:

page.on('console', msg => {
  for (let i = 0; i < msg.args().length; i++) {
    console.log(msg.args()[i]);
  }
});

结果的开头将如下所示:

JSHandle {
  _context:
   ExecutionContext {
     _client:
      CDPSession {
        domain: null,
        _events: [Object],
        ...

推荐阅读