有时需要与现有的Chrome实例进行交互,可以使用puppeteer通过websocket连接浏览器实例:
const chromeLauncher = require('chrome-launcher');
const axios = require('axios');
const puppeteer = require('puppeteer');
(async () => {
// 手动初始化Chrome实例
const chrome = await chromeLauncher.launch({
chromeFlags: ['--headless']
});
const response = await axios.get(`http://localhost:${chrome.port}/json/version`);
const { webSocketDebuggerUrl } = response.data;
// 使用“browserWSEndpoint”连接实例
const browser = await puppeteer.connect({ browserWSEndpoint: webSocketDebuggerUrl });
console.info(browser);
await browser.close();
})();
可以看到,
- 我们首先使用Chrome-launcher启动一个Chrome实例
- 然后,获取实例的webSocketDebuggerUrl值
- 使用puppeteer的
connect
方法,通过webSocketDebuggerUrl连接浏览器实例
注意
运行脚本之前,先安装
chrome-launcher
与axios
:npm install chrome-launcher axios