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