我在JavaScript中創建了一個腳本,該腳本在自動瀏覽器測試期間注入到我們的Ext JS應用程序中。該腳本測量在我們的網格中加載數據所花費的時間。使用JavaScript測量頁面加載時間
具體來說,腳本輪詢每個網格,查看是否有第一行或「無數據」消息,並且一旦所有網格滿足此條件,腳本將記錄Date.now()和performance .timing.fetchStart,並將其視爲頁面加載的時間。
這個腳本或多或少像預期的那樣工作,但是當與人類測量的計時(Google stopwatch ftw)相比時,這個測試報告的時間比用秒錶測量的時間長大約300毫秒。
我的問題是:
- 是否有這樣的邏輯,這將導致不正確的結果一個洞?
- 有沒有其他的選擇和準確的方法來實現這個 測量?
的腳本如下:
function loadPoll() {
var i, duration,
dataRow = '.firstRow', noDataRow = '.noData',
grids = ['.grid1', '.grid2', '.grid3','.grid4', 'grid5', 'grid6', 'grid7'];
for (i = 0; i < grids.length; ++i) {
var data = grids[i] + ' ' + dataRow,
noData = grids[i] + ' ' + noDataRow;
if (!(document.querySelector(data) || document.querySelector(noData))) {
window.setTimeout(loadPoll, 100);
return;
}
}
duration = Date.now() - performance.timing.fetchStart;
window.loadTime = duration;
}
loadPoll();
一些注意事項:
雖然我知道,人的反應時間可能會很慢,我肯定 了300毫秒不一致不是由人類 使用Google秒錶的因素引入的。
看着它可能會出現多個的投票站 元素可能導致300毫秒不一致,但是當我 改變從7被監視到1個元素的數量,有 似乎仍然是一個代碼在 自動測試報告的時間內有300毫秒的剩餘時間。
我們的自動化測試是在由 Selenium and Protractor控制的框架中執行的。
如果您能提供任何見解,請事先致謝!
此問題標記爲[tag:node.js],但問題包含使用'window','document.querySelector'的代碼。我正在移除標籤。 –