總覽

在載入單一網頁時,您的瀏覽器必須向不同的 URL 發出許多網路呼叫,才能擷取要在頁面上提供的不同資源。現在,您可能想要檢查瀏覽器是否正在向特定 URL 發出請求,或僅收集瀏覽器為了載入網站而發出的所有網路呼叫。

您可以透過前往瀏覽器中可用的 DevTools 的「網路」標籤,並瀏覽所發出的所有網路呼叫來執行此操作,但是有一種簡單的自動化方法。

隨著 Chrome DevTools 通訊協定支援現在可在 Selenium 4 中使用,Nightwatch 現在支援擷取在載入網站時發出的所有網路呼叫。

此命令僅適用於基於 Chromium 的瀏覽器,例如 Google Chrome 和 Microsoft Edge。

擷取網路呼叫

此命令可讓您擷取在載入網站時發出的所有網路呼叫,並透過呼叫您提供的回呼以及網路呼叫參數作為引數,將它們傳送回您的測試執行本身。

您需要做的就是在使用瀏覽器導覽至您的網站之前,使用必要的參數呼叫 browser.captureNetworkRequests() 命令。

captureNetworkRequests() 接受回呼函式,每當瀏覽器發出網路呼叫時,該函式都會收到 requestParams 物件作為引數。您可以從 這裡找到收到的 requestParams 中可用的所有屬性。以下是一些重要屬性

名稱 類型 描述
時間戳記 數字 發出網路呼叫的時間。
請求
物件 request 物件包含有關所發出網路呼叫的所有重要詳細資訊,例如 URL、使用的 HTTP 方法、HTTP 標頭等。
您可以從 這裡讀取 request 物件中可用的所有屬性。

範例

tests/capture-network-calls.js
describe('capture network requests', function() {
  it('captures and logs network requests as they occur', function() {
    this.requestCount = 1;
    browser
      .captureNetworkRequests((requestParams) => {
        console.log('Request Number:', this.requestCount++);
        console.log('Request URL:', requestParams.request.url);
        console.log('Request method:', requestParams.request.method);
        console.log('Request headers:', requestParams.request.headers);
      })
      .navigateTo('https://www.google.com');
  });
});

上述範例中其中一個網路呼叫的輸出

  Running Capture network calls:
───────────────────────────────────────────────────────────────────────────────────────────────────
Request Number: 35
Request URL: https://www.google.com/favicon.ico
Request method: GET
Request headers: {
  'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"',
  'sec-ch-ua-full-version-list': '" Not A;Brand";v="99.0.0.0", "Chromium";v="102.0.5005.61", "Google Chrome";v="102.0.5005.61"',
  'sec-ch-ua-mobile': '?0',
  'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.61 Safari/537.36',
  'sec-ch-ua-arch': '"x86"',
  'sec-ch-viewport-width': '1200',
  'sec-ch-ua-full-version': '"102.0.5005.61"',
  'sec-ch-ua-platform-version': '"12.1.0"',
  Referer: 'https://www.google.com/',
  'sec-ch-dpr': '2',
  'sec-ch-ua-bitness': '"64"',
  'sec-ch-ua-wow64': '?0',
  'sec-ch-ua-model': '',
  'sec-ch-ua-platform': '"macOS"'
}