2015-10-31 10 views
3

Я пишу скрипт phantomjs, чтобы открывать страницу несколько раз и отслеживать длительность загрузки страниц. В сценарии ниже страница открывается 5 раз, но время загрузки страницы неточно, потому что фантом не ждет загрузки всех ресурсов и полной загрузки страницы (он сразу же запускает другую функцию и перекрывает предыдущие). Мой вопрос: как сделать phantomjs каждый раз в цикле ждать, пока все ресурсы и страница будут полностью загружены, чтобы я мог отслеживать фактическое время загрузки страницы в 5 раз, а затем вычислить среднюю загрузку страницы? Я новичок в написании сценариев и программировании, и это уже убивает меня, так как это рабочая задача, мне не хватает времени, чтобы узнать для себя эти вещи.Phantomjs: как дождаться загрузки страницы, чтобы отслеживать время загрузки?

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

Возможный дубликат [phantomjs не ждет «полной» загрузки страницы] (http://stackoverflow.com/questions/11340038/phantomjs-not-waiting-for-full-page-load) –

+1

Вопрос в том, как вы определить «полную» загрузку страницы. Если вы определите его «загрузите все ресурсы», тогда эти ответы помогут вам ближе: [один] (http://stackoverflow.com/a/14748934/1816580) и [два] (http://stackoverflow.com/ а/21401636/1816580) –

ответ

0

Ответ представлен в документации по фантомам, а также в примерах. Вот код для 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 

я обнаружил, что он принял На 10% больше времени с фантомами, чем с ручной проверкой с Chrome, и результаты всегда сравниваются с этим.

 Смежные вопросы

  • Нет связанных вопросов^_^