Phantomjs:如何等待页面完全加载来跟踪它';什么时候装货?
我正在编写一个phantomjs脚本来多次打开一个页面并跟踪页面的满载时间。在下面的脚本中,页面被打开了5次,但页面加载时间并不准确,因为phantom不会等待所有资源下载和页面完全加载(他会立即触发另一个函数并与上一个函数重叠)。我的问题是:如何让phantomjs每次在一个循环中等待所有资源和页面完全加载,这样我就可以跟踪实际页面加载时间5次,然后计算平均页面加载量? 我在写脚本和编程方面是新手,这已经让我很痛苦,因为这是一项工作任务,我没有足够的时间为自己学习这些东西Phantomjs:如何等待页面完全加载来跟踪它';什么时候装货?,phantomjs,pageload,page-load-time,Phantomjs,Pageload,Page Load Time,我正在编写一个phantomjs脚本来多次打开一个页面并跟踪页面的满载时间。在下面的脚本中,页面被打开了5次,但页面加载时间并不准确,因为phantom不会等待所有资源下载和页面完全加载(他会立即触发另一个函数并与上一个函数重叠)。我的问题是:如何让phantomjs每次在一个循环中等待所有资源和页面完全加载,这样我就可以跟踪实际页面加载时间5次,然后计算平均页面加载量? 我在写脚本和编程方面是新手,这已经让我很痛苦,因为这是一项工作任务,我没有足够的时间为自己学习这些东西 var loadpa
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%,在比较中结果总是这样。问题的可能重复之处在于如何定义“完整”页面加载。如果您用“所有资源都已加载”来定义它,那么这些答案应该会让您更接近:&