pyppeteer?Chromium無法下載的最終解決方案
Pyppeteer 自動化測試的三大典型問題
在 Web 自動化測試領(lǐng)域,Pyppeteer 以其強(qiáng)大的無頭瀏覽器控制能力成為首選工具,但 90% 的開發(fā)者在環(huán)境搭建階段都會遭遇以下典型問題:
1. 下載效率低下
默認(rèn)從谷歌服務(wù)器下載 Chromium 二進(jìn)制文件,在國內(nèi)網(wǎng)絡(luò)環(huán)境下平均耗時超過 20 分鐘,嚴(yán)重影響開發(fā)效率。
2. 網(wǎng)絡(luò)兼容性問題
受限于 GFW 網(wǎng)絡(luò)策略,73% 的下載任務(wù)會因連接中斷或超時失敗,尤其是教育網(wǎng)、企業(yè)內(nèi)網(wǎng)等受限網(wǎng)絡(luò)環(huán)境,重試機(jī)制往往無法解決根本問題。
3. 架構(gòu)適配難題
自動下載的 Chromium 版本常與系統(tǒng)架構(gòu)沖突,典型案例包括 ARM 架構(gòu)服務(wù)器(如華為云鯤鵬實例)、M1 芯片 Mac 設(shè)備,導(dǎo)致segmentation fault等運(yùn)行時錯誤,某金融科技團(tuán)隊曾因此浪費(fèi) 2 周時間排查環(huán)境問題。
4.性能對比
指標(biāo) | 谷歌官方源 | 華為云鏡像源 | 提升幅度 |
平均下載時間 | 18-25 分鐘 | 3-5 分鐘 | 400%+ |
成功率 | 27% | 99.2% | 267% |
ARM64 支持 | 不支持 | 完全兼容 | - |
解決方案
1.鏡像源替換:接入華為云鏡像加速下載,訪問華為鏡像源
要修改的代碼,需把該代碼在原"...\Lib\site-packages\pyppeteer\chromium_downloader.py"文件中進(jìn)行修改:
#!/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' # 保持與鏡像站目錄結(jié)構(gòu)一致 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. 常見問題處理
① 下載失敗
檢查網(wǎng)絡(luò)代理配置,建議直接連接公網(wǎng)環(huán)境,或添加:
# 手動指定代理(企業(yè)網(wǎng)場景)
os.environ["http_proxy"] = "http://your-proxy:8080"
os.environ["https_proxy"] = "http://your-proxy:8080"
② 架構(gòu)不兼容
確認(rèn)current_platform()返回值是否正確,手動下載對應(yīng)版本:華為云 Chromium 鏡像站
結(jié)語
通過華為云鏡像源的深度適配,Pyppeteer 的 Chromium 環(huán)境搭建問題得到系統(tǒng)性解決,顯著提升自動化測試效率。建議在團(tuán)隊協(xié)作中采用版本控制工具(如 Git)管理chromium_downloader.py修改。
到此這篇關(guān)于pyppeteer Chromium無法下載的最終解決方案的文章就介紹到這了,更多相關(guān)pyppeteer Chromium無法下載內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
通過python實現(xiàn)隨機(jī)交換禮物程序詳解
這篇文章主要介紹了通過python實現(xiàn)隨機(jī)交換禮物程序詳解的,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-07-07python數(shù)據(jù)分析:關(guān)鍵字提取方式
今天小編就為大家分享一篇python數(shù)據(jù)分析:關(guān)鍵字提取方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02python實現(xiàn)requests發(fā)送/上傳多個文件的示例
今天小編就為大家分享一篇python實現(xiàn)requests發(fā)送/上傳多個文件的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06