我在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'的代码。我正在移除标签。 –