擷取網路請求
總覽
在載入單一網頁時,您的瀏覽器必須向不同的 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"'
}