pyppeteer Chromium无法下载的最终解决方案

 更新时间:2025年07月05日 14:20:44   作者:guest_881  
Pyppeteer自动化测试常遇三大问题:下载效率低、网络兼容性差、架构适配难题,解决方案包括使用华为云镜像源加速下载,配置代理及手动匹配版本,显著提升效率并解决成功率低的问题,建议团队通过版本控制管理修改

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修改。

到此这篇关于pyppeteer Chromium无法下载的最终解决方案的文章就介绍到这了,更多相关pyppeteer Chromium无法下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pytorch 使用tensor特定条件判断索引

    Pytorch 使用tensor特定条件判断索引

    这篇文章主要介绍了Pytorch 使用tensor特定条件判断索引的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • 通过python实现随机交换礼物程序详解

    通过python实现随机交换礼物程序详解

    这篇文章主要介绍了通过python实现随机交换礼物程序详解的,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • Python中处理缺失值的有效方法详解

    Python中处理缺失值的有效方法详解

    在 Python 开发中,我们常常会遇到需要表示缺失值的场景,如何滥用None可能悄无声息地埋下隐患,所以本文小编为大家整理了一些其他方法,希望对大家有所帮助
    2025-06-06
  • Python随机生成身份证号码及校验功能

    Python随机生成身份证号码及校验功能

    这篇文章主要介绍了Python随机生成身份证号码及校验功能,文中给大家提到了校验码计算方法,需要的朋友可以参考下
    2018-12-12
  • python数据分析:关键字提取方式

    python数据分析:关键字提取方式

    今天小编就为大家分享一篇python数据分析:关键字提取方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python实现requests发送/上传多个文件的示例

    python实现requests发送/上传多个文件的示例

    今天小编就为大家分享一篇python实现requests发送/上传多个文件的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • TensorFlow打印输出tensor的值

    TensorFlow打印输出tensor的值

    这篇文章主要介绍了TensorFlow打印输出tensor的值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • Python使用configparser库读取配置文件

    Python使用configparser库读取配置文件

    这篇文章主要介绍了Python使用configparser库读取配置文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • python序列化与数据持久化实例详解

    python序列化与数据持久化实例详解

    这篇文章主要介绍了python序列化与数据持久化,结合实例形式详细分析了Python序列化与数据持久化相关原理、实现技巧与操作注意事项,需要的朋友可以参考下
    2019-12-12
  • python安装pywifi全过程

    python安装pywifi全过程

    这篇文章主要介绍了python安装pywifi全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06

最新评论