首页 > 解决方案 > 如何使用 chrome.debugger API 在 chrome 扩展中运行 puppeteer-web?

问题描述

我希望能够从 chrome 扩展程序内部运行 puppeteer-web,但让它使用扩展程序可用的 chrome.debugger devtools API 连接到浏览器。而不是连接到远程调试端口 (9222) 或 websocket url。

在我的扩展程序中运行的 javascript 代码是这样的:

const puppeteer = require('puppeteer');

async function runPuppet(url) {
  const browser = await puppeteer.connect({browserURL: 'http://localhost:9222'});
  const page = await browser.newPage();

  await page.setRequestInterception(true);
  await page.goto(url);

  return page.url();
}

这很好用,但这意味着我必须使用--remote-debugging-port=9222不理想的选项启动 google chrome。当 chrome.debugger API 已经可用于扩展时,似乎没有必要打开远程调试端口,因此扩展不必为了访问 devtools 而进入应用程序的“外部”。

我已经看到,在puppeteer 浏览器测试文件中有一个示例,它调用了它puppeteer.connect({transport: window.cdp});,这看起来像是我想做的事情,但是window.cdp我的扩展中的属性未定义,我也找不到任何关于它的文档。

任何帮助将不胜感激,谢谢。

标签: javascriptgoogle-chrome-extensionpuppeteer

解决方案


推荐阅读