【问题标题】:Tell Puppeteer to open Chrome tab instead of window告诉 Puppeteer 打开 Chrome 选项卡而不是窗口
【发布时间】:2018-06-21 11:06:26
【问题描述】:

如果我打开了现有的 Google Chrome 窗口,我想告诉 puppeteer 打开一个新选项卡而不是打开一个新窗口。有没有办法做到这一点?是否有一些选项或标志我可以传递给 puppeteer 来完成此操作?

我有:

const puppeteer = require('puppeteer');

(async function () {

  const b = await puppeteer.launch({
    devtools: true,
    openInExistingWindow: true /// ? something like this?
  });

  const page = await b.newPage();
  await page.goto('https://example.com');

})();

【问题讨论】:

    标签: node.js google-chrome puppeteer


    【解决方案1】:
    const browser = puppeteer.launch();
    const page = browser.newPage();
    

    这实际上会在您当前的浏览器实例上打开一个新选项卡。 您可以查看页面类文档here 和浏览器类文档here

    【讨论】:

    • 是否方便在标签之间切换?
    • 您可以使用browser.pages() 获取所有打开页面的列表,然后使用您需要的pageFromTheList.doSomething()
    • 请回答所有必需的代码。现在您没有指定浏览器来自哪里?是包裹吗?如果是,它在哪里?
    • 不工作 :/ 在版本 75.0.3770.100(官方构建)(64 位)中,它仍然打开了新的 chrome 实例并且它没有任何历史记录,我不得不将它与我的其他镀铬标签。 const puppeteer = require('puppeteer'); const pptr = require('puppeteer-core'); (async () => { const browser = await puppeteer.launch({ headless: false, executablePath: '/usr/bin/google-chrome' }); })();在这里我也尝试了 puppeteer-core ,意思是 pptr 变量 await pptr.launch 在上面的变量中,仍然无法正常工作。问题尚未结束!
    • 嗨@PratikCJoshi 我刚刚更新了代码sn-p 和文档链接以反映browser 的来源。我仍然在新版本中成功使用这种方法,没有问题。官方文档仍然声明这是处理多个选项卡的正确方法。您的问题可能与您尝试使用的 chrome 二进制文件有关。我建议针对您的具体案例提出一个新问题并提供更多信息。
    【解决方案2】:

    你需要使用:

    /usr/bin/google-chrome-stable --remote-debugging-port=9220

    获取用于调试的 websocket 连接,然后可以将其提供给 Puppeteer:

    await puppeteer.connect({browserWSEndpoint: chromeWebsocket})

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-06
      • 2011-10-29
      • 2012-01-28
      • 2011-06-21
      • 2011-03-17
      相关资源
      最近更新 更多