ChromeHeadless——革新了前端測試以及網站監控!

Chrome已經成為了一個完善的瀏覽器生態系統,對於前端開發者來說,Chrome Devtools是必備的開發工具之一。Chrome還提供了一種無桌面界面的瀏覽器模式稱之為Headless Mode,具有遠程控制、命令行調用、頁面性能分析等特性。在前端自動化測試或者網站監控方面,ChromeHeadless的表現相比Selenium等其他測試框架有著明顯的優越性。

一、ChromeHeadless讓前端自動化測試變得更加高效

自動化測試對於前端開發的重要性已經與日俱增。傳統的前端自動化測試框架例如Protractor依賴於Selenium WebDriver來驅動瀏覽器,執行自動化測試任務時需要啟動一個完整的瀏覽器工作環境。計算機資源的消耗以及前端測試的等待時間也成為了該方法的瓶頸。

與傳統方法相比,ChromeHeadless顯然更加輕量化且不需要等待可見元素出現,可以顯著提高測試的效率。跑完一場自動化測試任務的時間由幾十秒甚至幾分鐘縮短到幾秒鐘,極大地提高了測試效率。同時開發者可以通過Chrome Remote Debugging Protocol API,自動化地啟動或停止ChromeHeadless,也可以通過JavaScript交互、修改頁面CSS或者模擬用戶操作。

一個簡單的例子,在ChromeHeadless中使用Puppeteer對百度進行簡單的驗證:

const puppeteer = require('puppeteer');

test('百度首頁測試', async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.baidu.com');
  const title = await page.title();
  expect(title).toBe('百度一下,你就知道');
  await browser.close();
});

二、使用ChromeHeadless進行頁面性能檢測

在ChromeHeadless中,我們可以互動式地測試資源,網路請求以及頁面性能。我們可以使用一些在開發中並不常用卻非常有用的Devtools命令來進行性能分析,例如Timelines、Profiles、Audits、Coverage以及使用Tracing API關注關鍵性能指標。

在下面的代碼中,我們模擬載入百度首頁並使用Tracing API測量其關鍵渲染路徑時間——從開始導航到首次中斷解析並繪製到屏幕上的時間點。

const puppeteer = require('puppeteer');

test('網站性能測試', async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.tracing.start({path: 'trace.json'});
  await page.goto('https://www.baidu.com');
  await page.tracing.stop();
  await browser.close();
});

我們可以使用Chrome browser擴展程序或者分析器將生成的trace.json文件轉化為可讀的互動式時間軸,分析出渲染瓶頸以及一些性能問題。

三、ChromeHeadless監控網站性能自動化

我們可以使用Headless模式來設置網站性能測試、跟蹤用戶體驗並檢測運營問題。我們可以使用Headless綁定伺服器,以節省用戶端的資源和時間。PhantomJS在Headless瀏覽器早期領先,目前ChromeHeadless更容易使用而且性能更好,例如Puppeteer的事件驅動特性可以更加輕鬆地對頁面進行操作。

在下面的代碼中,我們實現了一個通過檢測頁面響應時間,同時包含多種瀏覽器的跨平台腳本:

const puppeteer = require('puppeteer');
const expect = require('chai').expect;

describe('網站性能監控', () => {
  let browser;
  let page;

  before(async () => {
    browser = await puppeteer.launch();
    page = await browser.newPage();
  });

  after(async () => {
    await browser.close();
  });

  it('百度首頁響應時間', async () => {
    await page.goto('https://www.baidu.com');
    const result = await page.evaluate(() => {
      return window.performance.timing.loadEventEnd;
    });
    expect(result).to.be.a('number');
  });
});

四、使用ChromeHeadless進行網站截屏測試

當在伺服器上運行WebDriver時,屏幕上不會被任何瀏覽器渲染出來。這也使得很難捕捉可見性和布局變化相關的問題。PhantomJS提供了可決定的、快速的、基於Web的、跨平台的截圖機制。ChromeHeadless同樣可以輸出網站的截圖,可以使用Puppeteer對網站的頁面截圖進行比較。

const puppeteer = require('puppeteer');
const expect = require('chai').expect;

describe('網站截圖測試', () => {
  let browser;
  let page;

  before(async () => {
    browser = await puppeteer.launch();
    page = await browser.newPage();
  });

  after(async () => {
    await browser.close();
  });

  it('截圖對比測試', async () => {
    await page.goto('https://www.baidu.com');
    await page.setViewport({ width: 1000, height: 500 });
    const screenshot = await page.screenshot();
    expect(screenshot).to.matchImageSnapshot();
  });
});

五、小結

ChromeHeadless提供了一些非常出色的特性,例如快速準確地進行自動化測試、測量網站性能、監控網站性能以及截圖測試。ChromeHeadless為前端開發者提供了更好的體驗,也為測試人員被能夠編寫更可靠的自動化測試提供了新的工具。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254077.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-14 17:40
下一篇 2024-12-14 17:40

相關推薦

  • Python爬蟲可以爬哪些網站

    Python是被廣泛運用於數據處理和分析領域的編程語言之一。它具有易用性、靈活性和成本效益高等特點,因此越來越多的人開始使用它進行網站爬取。本文將從多個方面詳細闡述,Python爬…

    編程 2025-04-29
  • 網站為什麼會被黑客攻擊?

    黑客攻擊是指利用計算機技術手段,入侵或者破壞計算機信息系統的一種行為。網站被黑客攻擊是常見的安全隱患之一,那麼,為什麼網站會被黑客攻擊呢?本文將從不同角度分析這個問題,並且提出相應…

    編程 2025-04-29
  • JDK Flux 背壓測試

    本文將從多個方面對 JDK Flux 的背壓測試進行詳細闡述。 一、Flux 背景 Flux 是 JDK 9 對響應式編程的支持。它為響應式編程提供了一種基於推拉模型的方式,以支持…

    編程 2025-04-29
  • 如何用Python訪問網站

    本文將從以下幾個方面介紹如何使用Python訪問網站:網路請求、POST請求、用戶代理、Cookie、代理IP、API請求。 一、網路請求 Python有三種主流的網路請求庫:ur…

    編程 2025-04-29
  • 如何將Python開發的網站變成APP

    要將Python開發的網站變成APP,可以通過Python的Web框架或者APP框架,將網站封裝為APP的形式。常見的方法有: 一、使用Python的Web框架Django Dja…

    編程 2025-04-28
  • 如何在伺服器上運行網站

    想要在伺服器上運行網站,需要按照以下步驟進行配置和部署。 一、選擇伺服器和域名 想要在伺服器上運行網站,首先需要選擇一台雲伺服器或者自己搭建的伺服器。雲伺服器會提供更好的穩定性和可…

    編程 2025-04-28
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28
  • Powersploit:安全評估與滲透測試的利器

    本文將重點介紹Powersploit,並給出相關的完整的代碼示例,幫助安全人員更好地運用Powersploit進行安全評估和滲透測試。 一、Powersploit簡介 Powers…

    編程 2025-04-28
  • Python介面自動化測試

    本文將從如下多個方面對Python編寫介面自動化進行詳細闡述,包括基本介紹、常用工具、測試框架、常見問題及解決方法 一、基本介紹 介面自動化測試是軟體測試中的一種自動化測試方式。通…

    編程 2025-04-27
  • eu.ipidea.io——全能編程開發工程師必備網站

    eu.ipidea.io作為一個編程工具聚合平台,提供了包括代碼在線編輯、API查詢和IDE集成等多個方面的功能,大大方便了全能編程開發工程師的工作。 一、在線代碼編輯 eu.ip…

    編程 2025-04-27

發表回復

登錄後才能評論