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无法下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python网络编程之数据传输UDP实例分析

    python网络编程之数据传输UDP实例分析

    这篇文章主要介绍了python网络编程之数据传输UDP实现方法,实例分析了Python基于UDP协议的数据传输实现方法,需要的朋友可以参考下
    2015-05-05
  • python中字符串比较使用is、==和cmp()总结

    python中字符串比较使用is、==和cmp()总结

    在Python中比较字符串最好是使用简单逻辑操作符,今天为大家讲解一下is、==和cmp()使用总结
    2018-03-03
  • python 包 requests 实现请求操作

    python 包 requests 实现请求操作

    这篇文章主要介绍了python 包 requests 实现请求操作,文章介绍内容包括带参数请求、自定义headers,文章内容详细具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • python HTTPX库实现同步异步请求用法示例

    python HTTPX库实现同步异步请求用法示例

    这篇文章主要为大家介绍了python HTTPX库实现同步异步请求用法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 用Matlab读取CSV文件出现不匹配问题及解决

    用Matlab读取CSV文件出现不匹配问题及解决

    这篇文章主要介绍了用Matlab读取CSV文件出现不匹配问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • Python日期操作学习笔记

    Python日期操作学习笔记

    字符串是使用静态的方式进行存储,只能读而不能直接修改字符内容。特别将一堆对字符串并在一起的时候,虽然可以直接相加,听说这样的速度奇慢,只有用其它函数的方式进行,好在也不太麻烦。
    2008-10-10
  • Python从入门到精通之环境搭建教程图解

    Python从入门到精通之环境搭建教程图解

    这篇文章主要介绍了Python从入门到精通之环境搭建,需要的朋友可以参考下
    2019-09-09
  • Python数据结构之翻转链表

    Python数据结构之翻转链表

    这篇文章主要介绍了Python数据结构之翻转链表的相关资料,需要的朋友可以参考下
    2017-02-02
  • Python枚举类定义和使用方法

    Python枚举类定义和使用方法

    这篇文章主要介绍了Python枚举类定义和使用方法,文章围绕主题的相关资料展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • 终于明白tf.reduce_sum()函数和tf.reduce_mean()函数用法

    终于明白tf.reduce_sum()函数和tf.reduce_mean()函数用法

    这篇文章主要介绍了终于明白tf.reduce_sum()函数和tf.reduce_mean()函数用法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11

最新评论