Phantomjs:如何等待页面完全加载以跟踪它的加载时间?

时间:2015-10-31 11:14:11

标签: phantomjs pageload page-load-time

我正在编写一个phantomjs脚本来多次打开一个页面并跟踪页面的完整加载时间。在下面的脚本中,页面打开了5次,但页面加载时间不准确,因为幻像不会等待所有资源下载和页面完全加载(他立即触发另一个函数并重叠之前)。我的问题是:如何在每次循环中使phantomjs等待所有资源和页面完全加载,这样我可以跟踪实际的页面加载时间5次,然后计算平均页面加载? 我是编写脚本和编程的新手,它已经杀了我,因为这是一项工作任务,我没有足够的时间为自己学习这些东西。

var loadpage = function (i, max){
if (i === max) {
    phantom.exit();
    return;
}
var address = 'http://www.google.com';
t = Date.now();
page.open(address, function(status) {
    if (status !== 'success') {
        console.log('FAIL to load the address');
    } else {
        t = Date.now() - t;
        console.log('Loading ' + address);
        console.log('Loading time ' + t + ' msec');

    }

    loadpage(i+1, max)
});
};

loadpage(0, 5);

1 个答案:

答案 0 :(得分:0)

答案在phantomjs文档中以及示例中。这是loadtime.js的代码:

"use strict";
var page = require('webpage').create(),
    system = require('system'),
    t, address;

if (system.args.length === 1) {
    console.log('Usage: loadspeed.js <some URL>');
    phantom.exit(1);
} else {
    t = Date.now();
    address = system.args[1];
    page.open(address, function (status) {
        if (status !== 'success') {
            console.log('FAIL to load the address');
        } else {
            t = Date.now() - t;
            console.log('Page title is ' + page.evaluate(function () {
                return document.title;
            }));
            console.log('Loading time ' + t + ' msec');
        }
        phantom.exit();
    });
}

您可以像这样使用此示例:

phantomjs loadtime.js http://www.google.com

它提供如下输出:

Page title is Google
Loading time 767 msec

我发现使用phantomjs花费的时间比使用Chrome进行手动检查的时间多10%,结果在比较中总是如此。