使用casperjs获取页面加载时间

时间:2014-06-06 19:43:05

标签: casperjs

我尝试使用casperjs捕获页面加载时间。相关页面受登录保护。以下是我到目前为止的情况:

var casper = require('casper').create();

// Enter the login page, fill up the form and submit it
casper.start('https://example.net/login', function () {
        // Fill the form
    this.fill('form[name=signin]', {
       'user': 'username',
       'passwd': 'password'
    }, false);

        // Submit the form by clicking the submit button
    this.then(function() { 
        this.click('#sign_in');
    });
});

// Now on the loggedin page click the link of page for which response time is needed
casper.then (function() {
        var start = Date.now();
    this.click ('#pageLink');
        // Measure response time of this page
        var end = Date.now();
        this.echo (end - start);
});

casper.run();

我几乎可以告诉它错误的方法因为我应该等待页面加载然后捕获结束时间。但是在casper js文档页面上,我没有找到任何让我知道页面完全加载的东西。查找结束标记是否有意义,看看是否已加载?

1 个答案:

答案 0 :(得分:1)

你应该使用这些事件:这里是一个例子:

(function(){
    "use strict";
    var s
    ,e
    ;
    //we use casper events to calculate the time between a http request and its response
    casper.on('page.resource.requested', function(requestData, request) {
        //console.log("request url " + requestData.url);
        s = new Date().getTime();
    });

    casper.on('page.resource.received', function(response) {
        //console.log("response url " + response.url);
        e = new Date().getTime();
        casper.echo("Time between HTTP request and HTTP response : " + (e-s) + "ms","INFO");
    });
})();//then your code

我只使用IIFE为var s(start)和e(end)创建一个范围。

对于您想要的内容,您可以对load.startedload.finished执行相同的操作。

http://casperjs.readthedocs.org/en/latest/events-filters.html

但是有更好的工具可以做到这一点,Casper对于监控并不是那么好。