Playwright 依赖安装失败问题

因 Playwright 依赖的浏览器安装源在国外,有时候会下载失败,导致无法正常使用,我们可以通过一下方式解决。

一、通过代理下载

如果有通过代理下载的需求,需要设置环境变量 HTTPS_PROXY=http://myproxy。(参考:通过代理下载)

二、提前下载镜像二进制文件,部署到本地

在 CI 构建机的环境下,我们不方便通过代理链接外网,则可以使用这种方式。通过在浏览器中输入 CDN 地址直连下载(windows 系统请将 linux 改为 win64):

# https://playwright.azureedge.net/builds/chromium/1140/chromium-linux.zip
# https://playwright-akamai.azureedge.net/builds/firefox/1465/firefox-ubuntu-22.04.zip
# https://playwright.azureedge.net/builds/webkit/2083/webkit-ubuntu-22.04.zip
# https://playwright.azureedge.net/builds/ffmpeg/1010/ffmpeg-linux.zip

其他浏览器地址…

这里只举例了最重要的 Chrome 以及视频录制工具 ffmpeg 的下载地址,其他浏览器的下载地址可以类推出来。
将下载的包传入目标机器,存入指定路径即可:(参考:浏览器二进制文件路径参考)

  • %USERPROFILE%\AppData\Local\ms-playwright on Windows
  • ~/Library/Caches/ms-playwright on MacOS
  • ~/.cache/ms-playwright on Linux

以 Windows 下的 Chrome 的存放路径为例:%USERPROFILE%\AppData\Local\ms-playwright\chromium-1064\chrome-win

四、自己搭建文件镜像服务

可以通过对象存储、nginx 或者其他多种方式起一个静态文件服务,预先下载好安装包,并按照 /builds/${name}/${version}/${name}-${platform}.zip 的格式归档(参考:从制品仓下载)。
之后设置环境变量 PLAYWRIGHT_DOWNLOAD_HOST 可以修改下载地址。
注意Playwright 版本依赖特定浏览器版本,如果需要经常更新项目中的 Playwright 版本,镜像归档中的浏览器包也需要根据实际情况维护更新,可以在 Playwright 的代码仓中找到维护版本信息的 JSON 文件

我这按规范目录,将文件放置在 阿里云对象存储桶中。

Dockerfile 指定环境变量

# 默认情况下,Playwright 从 Microsoft 的 CDN 下载浏览器。
# 有时公司会维护内部代理,阻止直接访问公共资源。在这种情况下,可以将 Playwright 配置为通过代理服务器下载浏览器。
#ENV HTTPS_PROXY=https://cdn.你的域名.com

# 如果代理的请求被自定义的不受信任的证书颁发机构(CA)拦截,并且在下载浏览器时屈服,则必须NODE_EXTRA_CA_CERTS在安装浏览器之前通过环境变量设置自定义根证书:
#ENV NODE_EXTRA_CA_CERTS=/path/to/ca.pem

# 如果您的网络连接到 Playwright 浏览器存档的速度很慢,您可以使用PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT环境变量增加连接超时时间(以毫秒为单位):
ENV PLAYWRIGHT_DOWNLOAD_CONNECTION_TIMEOUT = 600000

# 有时,公司会维护一个内部的工件存储库来托管浏览器二进制文件。在这种情况下,可以使用 env 变量将 Playwright 配置为从自定义位置下载PLAYWRIGHT_DOWNLOAD_HOST。
ENV PLAYWRIGHT_DOWNLOAD_HOST=https://xxx.oss-cn-hangzhou.aliyuncs.com

# 还可以使用每个浏览器的下载主机 PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST、PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST、PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST,使用优先于 PLAYWRIGHT_DOWNLOAD_HOST 的环境变量。
#ENV PLAYWRIGHT_CHROMIUM_DOWNLOAD_HOST=https://xxx.oss-cn-hangzhou.aliyuncs.com
#ENV PLAYWRIGHT_FIREFOX_DOWNLOAD_HOST=https://xxx.oss-cn-hangzhou.aliyuncs.com
#ENV PLAYWRIGHT_WEBKIT_DOWNLOAD_HOST=https://xxx.oss-cn-hangzhou.aliyuncs.com

# Playwright 将 Chromium、WebKit 和 Firefox 浏览器下载到特定于操作系统的缓存文件夹中:
# 在 Windows 上 : %USERPROFILE%\AppData\Local\ms-playwright
# 在 macOS 上:~/Library/Caches/ms-playwright
# 在 Linux 上 :~/.cache/ms-playwright
# 可以使用环境变量覆盖默认行为。安装 Playwright 时,请要求它将浏览器下载到特定位置:
#ENV PLAYWRIGHT_BROWSERS_PATH=$HOME/pw-browsers

# 在某些情况下,希望完全避免浏览器下载,因为浏览器二进制文件是单独管理的。
# ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
作者:Jeebiz  创建时间:2025-05-23 16:45
最后编辑:Jeebiz  更新时间:2025-05-23 17:23