puppeteer 通过回调评估函数

标签 puppeteer

我正在尝试使用 puppeteer 评估函数,但回调永远不会触发(我确信主机页面正在按预期工作)。

在主机页面上,监听器的工作方式如下:

DB.when('ready').execute(function(db){
  // DB can execute stuff
})

我的 puppeteer 代码尝试获取准备好的数据库:

try {
  const dbhandle = await page.evaluate('DB.when("ready")');
  const result = await page.evaluate(db => db.execute, function(images) {
    console.log(JSON.stringify(images));
    //do stuff with callback
  }, dbhandle);
    console.log('result', JSON.stringify(result));
} catch (e) {
    console.log('evaluate', e);
} finally {
    console.log('finally');
}

我在这方面运气不佳。

最佳答案

天啊我终于明白了...

try {
  function fooBugger() {
    return new Promise((resolve, reject) => {
      DB.when('ready').execute(function(db) {
        if (db) {
          resolve(db.some_data);
        } else {
          reject('nope');
        }
      });
    });
  }
  const res = await page.evaluate(fooBugger);

  console.log('resultHandle', JSON.stringify(res));
} catch (e) {
  console.log('evaluateHandle', e);
} finally {
}

关于puppeteer 通过回调评估函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47117528/

相关文章:

node.js - 使用来自另一个容器的容器化 chrome 二进制文件运行 puppeteer

amazon-web-services - 将 Puppeteer 截图重定向到 S3

javascript - 在 Puppeteer 中获取具有动态 ID 的元素

javascript - ElementHandle.$eval pageFunction 未执行

node.js - 如何使用 Puppeteer 和 JSDOM 下载 HTML、CSS 和 IMG

linux - 每个程序使用字体

javascript - 使用 puppeteer queryselector 从具有相同类的相同元素中仅获取特定元素

reactjs - E2E测试 Material -UI Select with Puppeteer

javascript - 等待异步递归函数完成,然后再继续执行下一行代码

puppeteer - 如何在 puppeteer 中单击 id 包含冒号的元素?