无主之地2配置高吗|看真人裸体BBBBB|秋草莓丝瓜黄瓜榴莲色多多|真人強奷112分钟|精品一卡2卡3卡四卡新区|日本成人深夜苍井空|八十年代动画片

網易首頁 > 網易號 > 正文 申請入駐

用Playwright打造你的專屬Web性能監控腳本

0
分享至

在Web應用開發過程中,前端性能測試是不可或缺的一環。隨著頁面復雜度與用戶體驗要求越來越高,傳統的性能測試手段已難以滿足現代Web的精細化需求。Playwright 作為新一代自動化測試框架,不僅支持多瀏覽器、多平臺,還能深度集成性能指標采集,成為Web性能測試領域的新寵。

本文將以一個 Playwright性能測試腳本為例,深入剖析其設計思路、實現細節、關鍵指標、實戰操作與優化建議,幫助你從0到1構建屬于自己的Web性能測試工具。



一、為什么選擇Playwright做性能測試?

1.1 傳統工具的局限

Lighthouse:適合單頁面、單次分析,自動化批量測試不便。

Selenium:雖可自動化,但性能指標采集能力有限。

WebPageTest:更偏向于黑盒、網絡層面,難以細粒度采集前端關鍵指標。

1.2 Playwright的優勢

多瀏覽器支持:一套腳本可在Chromium、Firefox、WebKit上運行。

異步API:高并發、低延遲,適合批量測試。

CDP協議集成:可直接獲取瀏覽器底層性能數據。

靈活的頁面操作:可模擬真實用戶行為,支持復雜交互。

易于擴展:Python/Node.js等多語言支持,生態活躍。

二、腳本結構與核心實現詳解

2.1 功能總覽



主要功能:

自動化打開指定URL

多次迭代采集性能數據

統計并輸出關鍵性能指標

生成詳細JSON報告與頁面截圖

2.2 主要流程

1. 參數解析:支持命令行傳入URL和迭代次數

2. 瀏覽器環境初始化:設置分辨率、User-Agent、時區等

3. 頁面加載與事件監聽:采集控制臺、JS錯誤、請求失敗等

4. 性能指標采集:通過CDP和Performance API獲取各類指標

5. 結果統計與評級:多次迭代后輸出均值與Web Vitals評級

6. 報告與截圖輸出:保存JSON報告和頁面截圖

三、關鍵性能指標全解

3.1 Web Vitals核心指標

FCP(First Contentful Paint):首次內容繪制時間,衡量頁面可見速度

LCP(Largest Contentful Paint):最大內容繪制時間,衡量主內容加載速度

CLS(Cumulative Layout Shift):累積布局偏移,衡量頁面視覺穩定性

FID(First Input Delay):首次輸入延遲,衡量交互響應速度

INP(Interaction to Next Paint):交互到下一幀,衡量復雜交互流暢性

3.2 其他重要指標

TTFB(Time To First Byte):首字節到達時間,反映后端響應速度

Speed Index:頁面內容可見速度的綜合評分

TTI(Time To Interactive):可交互時間,衡量頁面完全可用的時機

主線程阻塞時間:反映JS執行對主線程的占用

資源計數與大小:頁面加載的資源數量與體積

緩存命中率、圖片壓縮率:衡量資源優化效果

四、核心代碼實現剖析

4.1 瀏覽器與上下文初始化



@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋體";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋體;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}```pythonasync with async_playwright() as p: browser = await p.chromium.launch(headless=True) context = await browser.new_context( viewport={'width': 1920, 'height': 1080}, user_agent='Mozilla/5.0 ...', locale='zh-CN', timezone_id='Asia/Shanghai', ) page = await context.new_page()```

headless模式:保證測試結果不受UI渲染干擾

分辨率/UA/時區:模擬真實用戶環境,提升測試準確性

4.2 事件監聽與異常捕獲



@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋體";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋體;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}```pythonpage.on('console', lambda msg: console_messages.append(msg.text))page.on('pageerror', lambda err: js_errors.append(str(err)))page.on('requestfailed', lambda request: failed_requests.append({ 'url': request.url, 'error': request.failure.get('errorText', '')}))```

控制臺消息:捕獲JS日志與錯誤

請求失敗:定位資源加載異常

頁面錯誤:收集未捕獲的JS異常

4.3 性能指標采集

4.3.1 CDP協議獲取底層指標



@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋體";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋體;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}```pythoncdp_session = await context.new_cdp_session(page)await cdp_session.send('Performance.enable')performance_metrics = await cdp_session.send('Performance.getMetrics')```

JS堆內存、節點數等底層數據,有助于分析內存泄漏與DOM復雜度

4.3.2 Performance API獲取Web Vitals



@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋體";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋體;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}```pythonperformance_timing = await page.evaluate('''() => { const timing = performance.getEntriesByType('navigation')[0]; // ... return { domContentLoaded: timing.domContentLoadedEventEnd - timing.startTime, load: timing.loadEventEnd - timing.startTime, firstContentfulPaint: fcp, ttfb: ttfb, // ... };}''')```

導航、資源、繪制等多維度指標,全面反映頁面性能

4.3.3 復雜指標異步采集

如 FID、INP、LCP、CLS、TTI 等需通過 `PerformanceObserver` 異步監聽:







異步監聽:保證捕獲到頁面生命周期內的關鍵事件

超時兜底:防止頁面無交互時腳本卡死

4.4 結果統計與評級



多次迭代取均值,規避偶發波動

Web Vitals分級,一目了然定位性能短板

4.5 報告與可視化

JSON報告:結構化存儲,便于后續分析與可視化

頁面截圖:直觀記錄頁面狀態,輔助問題定位





五、實戰操作指南

5.1 環境準備

5.1.1 安裝依賴

@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋體";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋體;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}```bashpip install playwrightplaywright install```

5.1.2 運行腳本

@font-face{font-family:"Times New Roman";}@font-face{font-family:"宋體";}@font-face{font-family:"Calibri";}p.MsoNormal{mso-style-name:正文;mso-style-parent:"";margin:0pt;margin-bottom:.0001pt;mso-pagination:none;text-align:justify;text-justify:inter-ideograph;font-family:Calibri;mso-fareast-font-family:宋體;mso-bidi-font-family:'Times New Roman';font-size:10.5000pt;mso-font-kerning:1.0000pt;}span.msoIns{mso-style-type:export-only;mso-style-name:"";text-decoration:underline;text-underline:single;color:blue;}span.msoDel{mso-style-type:export-only;mso-style-name:"";text-decoration:line-through;color:red;}@page{mso-page-border-surround-header:no;mso-page-border-surround-footer:no;}@page Section0{}div.Section0{page:Section0;}```bashpython xxx.py https://your-website.com 5```

第一個參數為待測URL

第二個參數為迭代次數(可選,默認3次)

5.2 結果解讀

運行結束后,終端會輸出如下信息:



單次與均值對比:可發現性能波動與趨勢

評級直觀:快速定位需優化的指標

JSON報告:可用于后續數據分析、趨勢監控

5.3 報告結構說明

JSON報告主要包含:

`individualResults`:每次迭代的詳細指標

`averages`:各項指標均值

`ratings`:Web Vitals評級

可結合Excel、BI工具或自定義腳本進行可視化分析。



??轉崗軟件測試/野路子技能提升

??想了解更多漲薪技能提升方法

??可以到我的個人號:atstudy-js

即可加入領取 ??????

轉行、入門、提升、需要的各種干貨資料

內含AI測試、 車載測試、AI大模型開發、BI數據分析、銀行測試、游戲測試、AIGC

六、進階與擴展建議

6.1 多端/多瀏覽器測試

可通過參數化 `p.chromium` 為 `p.firefox` 或 `p.webkit`,實現多瀏覽器對比

可批量測試PC、移動端不同分辨率與UA

6.2 CI/CD集成

可將腳本集成至Jenkins、GitHub Actions等CI流程

自動化回歸測試,及時發現性能回退

6.3 指標擴展

可采集自定義業務指標,如首屏渲染、關鍵元素可見等

可集成APM、日志系統,關聯后端性能

6.4 可視化與告警

可將JSON結果推送至Prometheus、Grafana等監控平臺

設定閾值自動告警,保障用戶體驗

6.5 代碼優化建議

異步并發:可批量并發測試多個URL,提升效率

異常處理:完善異常捕獲與重試機制,提升健壯性

參數配置:支持通過配置文件批量管理測試用例

七、常見問題與排查

7.1 頁面未加載或超時

檢查URL是否可訪問

增大 `timeout` 參數

檢查網絡代理、防火墻設置

7.2 指標異常或為0

某些指標需頁面有真實交互或特定內容

檢查頁面是否有FCP/LCP等事件

檢查腳本是否有權限訪問Performance API

7.3 結果波動大

建議多次迭代取均值

避免測試期間網絡波動、服務器重啟等外部干擾

八、結語

Playwright為Web性能測試帶來了前所未有的靈活性與深度。通過本文詳解的實戰腳本與原理剖析,你可以輕松搭建起一套專業級的性能測試體系,實現從單頁到全站、從本地到CI的全流程自動化性能監控。

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
中方連夜通告全球,菲律賓暴怒,菲防長徹底破防:我只是說了實話

中方連夜通告全球,菲律賓暴怒,菲防長徹底破防:我只是說了實話

趣文說娛
2026-06-12 21:53:30
患者因腹瀉等癥狀入院6小時后死亡?官方通報

患者因腹瀉等癥狀入院6小時后死亡?官方通報

極目新聞
2026-06-12 20:21:19
楊瀚森帶隊擔主力?CCTV5直播中澳大戰,郭士強亮劍為世預賽布局

楊瀚森帶隊擔主力?CCTV5直播中澳大戰,郭士強亮劍為世預賽布局

林子說事
2026-06-12 12:51:48
張馨予的老公太陽剛了!生活中顯得鶴立雞群,網友:一副領導樣子

張馨予的老公太陽剛了!生活中顯得鶴立雞群,網友:一副領導樣子

木子愛娛樂大號
2026-06-12 14:37:42
yoyo直播現特殊舉動,三個原因可能成下個離職者,俞敏洪做出表態

yoyo直播現特殊舉動,三個原因可能成下個離職者,俞敏洪做出表態

可愛小菜
2026-06-13 07:03:52
2026高考作文5篇高分范文,超驚艷!趕快收藏!

2026高考作文5篇高分范文,超驚艷!趕快收藏!

教材幫
2026-06-10 20:11:34
歷史開了個玩笑,先倒下的不是烏克蘭,而是百年中立的瑞士?

歷史開了個玩笑,先倒下的不是烏克蘭,而是百年中立的瑞士?

元寶課堂
2026-06-13 01:36:03
沙特方面披露美伊協議細節

沙特方面披露美伊協議細節

極目新聞
2026-06-12 11:29:13
十萬人困美國遣不回去,特朗普簽證威脅中國:快來把你們的人接走

十萬人困美國遣不回去,特朗普簽證威脅中國:快來把你們的人接走

夏末moent
2026-06-13 07:26:05
滬女點外賣備注“牛蛙不燒”,商家害怕差評送活娃應對!

滬女點外賣備注“牛蛙不燒”,商家害怕差評送活娃應對!

咸魚金腦袋
2026-06-12 22:06:53
陳龍燦:張本宇留日本有他的份,今定居四川,甘愿當普通大學教授

陳龍燦:張本宇留日本有他的份,今定居四川,甘愿當普通大學教授

寒士之言本尊
2026-06-12 16:18:24
女子因鉀過低心臟驟停,醫生:平時寧愿少吃點肉,也要多吃這5物

女子因鉀過低心臟驟停,醫生:平時寧愿少吃點肉,也要多吃這5物

芹姐說生活
2026-06-10 14:57:32
因為張維為教授,給復旦大學提兩個建議

因為張維為教授,給復旦大學提兩個建議

林中木白
2026-06-12 15:25:33
新婚夜妻子趕我出臥室,天亮去離婚她冷冷說,一句話我整個人傻了

新婚夜妻子趕我出臥室,天亮去離婚她冷冷說,一句話我整個人傻了

墨染塵香
2026-06-12 20:58:21
曝美團大裁員:連外賣基本盤都動刀 網友:后悔當初編壓榨算法嗎?

曝美團大裁員:連外賣基本盤都動刀 網友:后悔當初編壓榨算法嗎?

火鍋局
2026-06-12 11:18:14
25歲女子懷孕后確診紅斑狼瘡,堅持保胎多器官衰竭進ICU!早產生下750克女嬰,丈夫痛哭:真的很后悔,一定要把病給她看好

25歲女子懷孕后確診紅斑狼瘡,堅持保胎多器官衰竭進ICU!早產生下750克女嬰,丈夫痛哭:真的很后悔,一定要把病給她看好

都市快報橙柿互動
2026-06-12 23:25:27
賴昌星的“紅樓”有多厲害?官員坦白:享受全套服務,沒人能把持

賴昌星的“紅樓”有多厲害?官員坦白:享受全套服務,沒人能把持

流史歲月
2026-06-12 11:04:38
央行修訂大額存單管理辦法:個人認購門檻擬降至20萬,新增DR定價基準

央行修訂大額存單管理辦法:個人認購門檻擬降至20萬,新增DR定價基準

第一財經資訊
2026-06-12 22:49:35
杭州一咖啡店邀4000人來看世界杯直播,結果首戰0人到場,老板:第二場來了2人,我會堅持等下去

杭州一咖啡店邀4000人來看世界杯直播,結果首戰0人到場,老板:第二場來了2人,我會堅持等下去

極目新聞
2026-06-12 12:39:25
國內自駕 No.1沒有之一!3萬公里走完要 111 天,其他路都成將就

國內自駕 No.1沒有之一!3萬公里走完要 111 天,其他路都成將就

走吧自駕游
2026-06-10 16:42:12
2026-06-13 08:19:00
51Testing軟件測試網 incentive-icons
51Testing軟件測試網
中國軟件測試人的精神家園
1588文章數 13274關注度
往期回顧 全部

科技要聞

剛剛,人類歷史上首位萬億美元富豪誕生!

頭條要聞

47歲泰國長公主去世 70多歲泰王現繼承危機

頭條要聞

47歲泰國長公主去世 70多歲泰王現繼承危機

體育要聞

歐洲恐韓?肉德維德?

娛樂要聞

一天4個瓜,肖戰熱巴最意外

財經要聞

萬億美元順差背后,透露這些信號

汽車要聞

標配激光雷達/雙動力可選 昊鉑S600限時售17.99萬起

態度原創

家居
手機
旅游
藝術
教育

家居要聞

空間微調 移形換境

手機要聞

蘋果更新iOS 26采用率,近九成iPhone已升級,但比iOS 18同期略低

旅游要聞

印度有錢人真多酷暑辦理旅游簽證!不是有錢任性,是熱到活不下去

藝術要聞

砸了640億,再賠160億!沙特“The Line”項目徹底涼了?

教育要聞

高考可怕真相(四):97%家長和考生執著大學好壞!#金榜同行人

無障礙瀏覽 進入關懷版