如何捕获waitFor()在CasperJS中等待的时间?

时间:2016-10-10 16:15:17

标签: javascript performance-testing casperjs timing

我正在使用casperJS来测试一个应用程序。 事实是,我想捕获接收我正在等待的元素实际花了多长时间使用waitForSelector()。

如果我将日志级别设置为debug,它会在控制台中显示我等待显示的元素需要多长时间:
enter image description here

我想获得该值并将其存储在变量中。这可能与CasperJS / PhantomJS有关吗?如果不是,我可以使用什么框架?

1 个答案:

答案 0 :(得分:2)

自己动手的方法是自己花时间,这应该足够准确:

var start;
casper.then(function(){
    start = new Date().getTime();
});
casper.waitFor(...);
casper.then(function(){
    this.echo("waitFor() took " + (new Date().getTime() - start) + " ms");
});

当然这不是非常可重复使用的。注册"log" event

会更容易
casper.on("log", function(logEntry){
    if (logEntry.message.indexOf("waitFor() finished in ") === 0) {
        var time = parseInt(logEntry.message.match(/\d+/)[0]);
        // TODO: do something with the time
    }
});

请注意,这是异步的,但您仍可以从事件处理程序安排步骤(then*wait*函数)。

如果您对超时情况感兴趣,那么您可以注册"waitFor.timeout"事件。