浏览器管理
启动浏览器
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
// ...
关闭浏览器
如需优雅地关闭浏览器,请使用 browser.close() 方法:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const page = await browser.newPage();
await browser.close();
浏览器上下文
如果需要隔离自动化任务,请使用浏览器上下文。Cookie和本地存储不会在浏览器上下文之间共享。此外,你可以通过关闭上下文来关闭其中的所有页面。
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const context = await browser.createBrowserContext();
const page1 = await context.newPage();
const page2 = await context.newPage();
await context.close();
权限
你还可以为浏览器上下文配置权限:
import puppeteer from 'puppeteer';
const browser = await puppeteer.launch();
const context = browser.defaultBrowserContext();
await context.overridePermissions('https://html5demos.com', ['geolocation']);
连接到正在运行的浏览器
如果你在Puppeteer之外启动了浏览器,可以使用 connect 方法连接到它。通常,你可以从浏览器输出中获取WebSocket端点URL:
const browser = await puppeteer.connect({
browserWSEndpoint: 'ws://127.0.0.1:9222/...',
});
const page = await browser.newPage();
browser.disconnect();
注意
与 browser.close() 不同,browser.disconnect() 不会关闭浏览器或关闭任何页面。