微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用JavaScript测量页面加载时序

我在JavaScript中创建了一个脚本,在自动浏览器测试期间注入到我们的Ext JS应用程序中.该脚本测量在网格中加载数据所花费的时间.

具体来说,脚本轮询每个网格,查看是否存在第一行或“无数据”消息,并且一旦所有网格满足此条件,脚本将记录Date.Now()和performance.timing.fetchStart之间的值.,并将其视为页面加载的时间.

此脚本或多或少地按预期工作,但与人体测量时间(Google秒表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毫秒的不一致性不是由人类引入的
使用谷歌秒表的因素.
>查看代码可能会显示多个轮询
元素可能会导致300毫秒的不一致,但是当我
将受监控的元素数量从7更改为1
在报告的时间内似乎还有300毫秒的盈余
自动化测试.
>我们的自动化测试在受控制的框架中执行
硒和量角器.

如果您能够提供任何见解,请提前致谢!

最佳答案
如果使用performance.Now(),则时间应精确到5微秒.根据MDN

The performance.Now() method returns a DOMHighResTimeStamp,measured
in milliseconds,accurate to five thousandths of a millisecond (5
microseconds).

The returned value represents the time elapsed since the time origin
(the PerformanceTiming.navigationStart property).

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐