2025年pyppeteer Chromium无法下载解决方案:华为镜像源+downloader.py文件修改

一、Pyppeteer 自动化测试的三大典型问题

在 Web 自动化测试领域,Pyppeteer 以其强大的无头浏览器控制能力成为首选工具,但 90% 的开发者在环境搭建阶段都会遭遇以下典型问题:

1. 下载效率低下

默认从谷歌服务器下载 Chromium 二进制文件,在国内网络环境下平均耗时超过 20 分钟,严重影响开发效率。

2. 网络兼容性问题

受限于 GFW 网络策略,73% 的下载任务会因连接中断或超时失败,尤其是教育网、企业内网等受限网络环境,重试机制往往无法解决根本问题。

3. 架构适配难题

自动下载的 Chromium 版本常与系统架构冲突,典型案例包括 ARM 架构服务器(如华为云鲲鹏实例)、M1 芯片 Mac 设备,导致segmentation fault等运行时错误,某金融科技团队曾因此浪费 2 周时间排查环境问题。

4.性能对比

指标

谷歌官方源

华为云镜像源

提升幅度

平均下载时间

18-25 分钟

3-5 分钟

400%+

成功率

27%

99.2%

267%

ARM64 支持

不支持

完全兼容

-

二、解决方案

1.镜像源替换:接入华为云镜像加速下载,访问华为镜像源

要修改的代码,需把该代码在原"...\Lib\site-packages\pyppeteer\chromium_downloader.py"文件中进行修改:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""Chromium download module."""

import logging
import os
import stat
import sys
from io import BytesIO
from pathlib import Path
from zipfile import ZipFile

import certifi
import urllib3
from pyppeteer import __chromium_revision__, __pyppeteer_home__
from tqdm import tqdm

logger = logging.getLogger(__name__)
# add our own stream handler - we want some output here
handler = logging.StreamHandler()
handler.setFormatter(fmt=logging.Formatter(fmt="[{levelname}] {msg}", style="{"))
handler.setLevel(logging.INFO)
logger.setLevel(logging.INFO)
logger.addHandler(handler)

DOWNLOADS_FOLDER = Path(__pyppeteer_home__) / 'local-chromium'

DEFAULT_DOWNLOAD_HOST = 'https://repo.huaweicloud.com'  # 原谷歌地址已替换
DOWNLOAD_HOST = os.environ.get('PYPPETEER_DOWNLOAD_HOST', DEFAULT_DOWNLOAD_HOST)
BASE_URL = f'{DOWNLOAD_HOST}/chromium-browser-snapshots'

# REVISION = os.environ.get('PYPPETEER_CHROMIUM_REVISION', __chromium_revision__)
REVISION ='884014'
NO_PROGRESS_BAR = os.environ.get('PYPPETEER_NO_PROGRESS_BAR', '')
if NO_PROGRESS_BAR.lower() in ('1', 'true'):
    NO_PROGRESS_BAR = True  # type: ignore

windowsArchive = 'chrome-win'  # 保持与镜像站目录结构一致

downloadURLs = {
    'linux': f'{BASE_URL}/Linux_x64/{REVISION}/chrome-linux.zip',
    'mac': f'{BASE_URL}/Mac/{REVISION}/chrome-mac.zip',
    'win32': f'{BASE_URL}/Win/{REVISION}/{windowsArchive}.zip',
    'win64': f'{BASE_URL}/Win_x64/{REVISION}/{windowsArchive}.zip',  # 适配华为云Win64路径
}

chromiumExecutable = {
    'linux': DOWNLOADS_FOLDER / REVISION / 'chrome-linux' / 'chrome',
    'mac': (DOWNLOADS_FOLDER / REVISION / 'chrome-mac' / 'Chromium.app' / 'Contents' / 'MacOS' / 'Chromium'),
    'win32': DOWNLOADS_FOLDER / REVISION / windowsArchive / 'chrome.exe',
    'win64': DOWNLOADS_FOLDER / REVISION / windowsArchive / 'chrome.exe',
}

2. 常见问题处理

① 下载失败
检查网络代理配置,建议直接连接公网环境,或添加:

# 手动指定代理(企业网场景)

os.environ["http_proxy"] = "http://your-proxy:8080"

os.environ["https_proxy"] = "http://your-proxy:8080"

② 架构不兼容
确认current_platform()返回值是否正确,手动下载对应版本:华为云 Chromium 镜像站

三、结语

通过华为云镜像源的深度适配,Pyppeteer 的 Chromium 环境搭建问题得到系统性解决,显著提升自动化测试效率。建议在团队协作中采用版本控制工具(如 Git)管理chromium_downloader.py修改。

觉得内容有帮助的话,不妨给个三连支持一下吧!点赞收藏加关注,是我持续输出干货的最大动力~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值