我正在编写一个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);
答案 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%,结果在比较中总是如此。