#javascript #phantomjs #performance-testing #casperjs
#javascript #phantomjs #тестирование производительности #casperjs
Вопрос:
Я использую casperjs 1.1.0-beta3 для измерения времени загрузки страницы веб-страницы с интенсивным использованием ЦП и данных. В некоторых сценариях я вижу, что casperjs занимает очень много времени, чтобы обнаружить тестовый хук, который я установил, чтобы указать, что страница завершила загрузку и обработку большого объема данных.
Тестовый хук использует casper.waitFor
функцию для поиска переменной, которая устанавливается в глобальной области видимости на странице. Это то, что указывает скрипту, что все завершено и отрисовано.
Подробная информация о том, что делает страница, не является не очень актуальной, кроме того, что она получает большой объем данных JSON с сервера, а обработка выполняется в основном потоке — рабочие потоки не задействованы, и запросов CORS также нет.
Проблема в том, что casperjs, похоже, занимает намного больше времени (10x ) по сравнению с идентичным сценарием, выполняемым в обычном Chrome.
Что может происходить? Какие есть способы отладки?
Я настроил скрипты casperjs для создания скриншота страницы по истечении времени ожидания, и это показывает, что страница все еще находится в состоянии «обработки». Таким образом, действительно похоже, что движок webkit, используемый casper, намного медленнее, чем обычный chrome.
Комментарии:
1. Если вы говорите в некоторых сценариях , вы имеете в виду разные данные или частично другой код? Зарегистрируйтесь в
remote.message
page.error
событиях and . Возможно, есть ошибки. Если проблема с привязкой, вам нужна прокладка .2.С моей точки зрения, скорость отображения страницы слишком изменчива (по сравнению со стандартным браузером — у меня часто бывают небольшие зависания каспера), чтобы измерить точное время загрузки страницы. Но если вы достигнете времени ожидания, это означает, что со сценарием что-то не так, вы можете застрять на шаге. Вы также можете использовать параметры casper для отладки :
casper.options.verbose = true;
casper.options.logLevel ="debug";