Puppeteer 中文文档v25.8.0

BrowserProvider 接口

自定义浏览器提供程序实现的接口。允许用户为浏览器实现替代下载源。

⚠️ 重要:自定义提供程序不受 Puppeteer 官方支持。

通过实现此接口,您需对以下事项承担全部责任:

  • 确保下载的二进制文件与 Puppeteer 的预期兼容 - 测试浏览器启动及其他功能能否与您的二进制文件正常配合 - 在 Puppeteer 或您的下载源发生变化时保持兼容性 - 如果混合使用不同来源,需保证跨平台版本一致性

Puppeteer 仅测试并保证 Chrome for Testing 二进制文件。

签名

export interface BrowserProvider

示例

class ElectronDownloader implements BrowserProvider {
  supports(options: DownloadOptions): boolean {
    return options.browser === Browser.CHROMEDRIVER;
  }

  getDownloadUrl(options: DownloadOptions): URL {
    const platform = mapToPlatform(options.platform);
    return new URL(
      `v${options.buildId}/chromedriver-v${options.buildId}-${platform}.zip`,
      'https://github.com/electron/electron/releases/download/',
    );
  }

  getExecutablePath(options): string {
    const ext = options.platform.includes('win') ? '.exe' : '';
    return `chromedriver/chromedriver${ext}`;
  }
}

方法

方法

说明

getDownloadUrl(options)

获取所请求浏览器的下载 URL。

buildId 可以是精确版本(例如“131.0.6778.109”)或别名(例如“latest”、“stable”)。自定义提供程序如果支持别名,应在内部处理版本解析。

如果 buildId 无法解析为有效版本,则返回 null。URL 不会经过验证——如果该 URL 不存在,下载会在之后失败。

对于简单的 URL 构造可以是同步的;如果需要版本解析或网络请求,则可以是异步的。

getExecutablePath(options)

获取已解压归档中可执行文件的相对路径。

getName()

获取此提供程序的名称。用于错误消息和日志记录。

备注:

此方法用于代替 constructor.name,以避免生产构建中因代码压缩产生的问题。

supports(options)

检查此提供程序是否支持给定的浏览器/平台。用于在尝试下载前进行筛选。

对于快速检查可以是同步的;如果需要版本解析或网络请求,则可以是异步的。