Phantomjs:如何等待页面完全加载来跟踪它';什么时候装货?

Phantomjs:如何等待页面完全加载来跟踪它';什么时候装货?,phantomjs,pageload,page-load-time,Phantomjs,Pageload,Page Load Time,我正在编写一个phantomjs脚本来多次打开一个页面并跟踪页面的满载时间。在下面的脚本中,页面被打开了5次,但页面加载时间并不准确,因为phantom不会等待所有资源下载和页面完全加载(他会立即触发另一个函数并与上一个函数重叠)。我的问题是:如何让phantomjs每次在一个循环中等待所有资源和页面完全加载,这样我就可以跟踪实际页面加载时间5次,然后计算平均页面加载量? 我在写脚本和编程方面是新手,这已经让我很痛苦,因为这是一项工作任务,我没有足够的时间为自己学习这些东西 var loadpa

我正在编写一个phantomjs脚本来多次打开一个页面并跟踪页面的满载时间。在下面的脚本中,页面被打开了5次,但页面加载时间并不准确,因为phantom不会等待所有资源下载和页面完全加载(他会立即触发另一个函数并与上一个函数重叠)。我的问题是:如何让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);

答案就在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%,在比较中结果总是这样。

问题的可能重复之处在于如何定义“完整”页面加载。如果您用“所有资源都已加载”来定义它,那么这些答案应该会让您更接近:&