Как я могу определить, как долго waitFor() ждал в CasperJS?

#javascript #performance-testing #casperjs #timing

#javascript #тестирование производительности #casperjs #время

Вопрос:

Я использую CasperJS для тестирования одного приложения. Дело в том, что я хочу определить, сколько времени на самом деле потребовалось для получения элемента, который я жду, с помощью waitForSelector() .

Если я установлю уровень журнала на debug , в консоли будет показано, сколько времени потребовалось для появления элемента, которого я ждал:
введите описание изображения здесь

Я хочу получить это значение и сохранить его в переменной. Возможно ли это с CasperJS / PhantomJS? Если это не так, какую структуру я мог бы использовать вместо этого?

Комментарии:

1. Если данный ответ решил вашу проблему, вы можете принять его. Если этого не произошло, пожалуйста, поясните, что не так.

Ответ №1:

Подход «сделай сам» заключался бы в том, чтобы самому потратить время, которое должно быть достаточно точным:

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

Конечно, это не очень удобно для повторного использования. Было бы проще просто зарегистрироваться на "log" событие:

 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" событие.