Puppeteer-web:不允许协议错误(目标:getBrowserContexts)

tch*_*han 5 puppeteer

我有一个试图实现 puppeteer-web 的 chrome 扩展。我按照以下代码尝试设置 puppeteer-web:“Puppeteer 不是构造函数”

这是我的代码:

const puppeteer = require("puppeteer");
async function initiatePuppeteer() {
  let browserWSEndpoint = '';
  await fetch("http://127.0.0.1:9222/json")
    .then(response => response.json())
    .then(function(data) {
        let filteredData = data.filter(tab => tab.type ==='page');
        browserWSEndpoint = filteredData[0].webSocketDebuggerUrl;
      })
    .catch(error => console.log(error));
    const browser = await puppeteer.connect({
      browserWSEndpoint: browserWSEndpoint
    });
    const page = await browser.newPage();
    ....etc
}
Run Code Online (Sandbox Code Playgroud)

代码似乎没有超过这一点,因为当我将调试器放在const browser = await puppeteer.connect我收到错误时

Uncaught (in promise) Error: Protocol error (Target.getBrowserContexts): Not allowed.
Run Code Online (Sandbox Code Playgroud)

使用 Chrome 版本 V76.0.3809.100 任何想法?

编辑:我的 webSocketDebuggerUrl 类似于 ws://127.0.0.1:9222/devtools/page/E1B62B356262B00C26A5D79D03745360

我怀疑这是因为它是/page/而不是/browser/但我无法从 /json 路由中找到任何类型的浏览器。今晚我再看一遍。

tch*_*han 8

好的,结果证明 puppeteer 只能连接到browser目标,而不是page按照https://github.com/GoogleChrome/puppeteer/issues/4579#issuecomment-511267351的目标

并阅读 API 的文档(我应该早点完成...)https://github.com/GoogleChrome/puppeteer/blob/master/docs/api.md#browserwsendpoint指出browser目标的URL是http://${host}:${port}/json/version而不是只是/json