Время ожидания CasperJS на странице, которую Chrome может загрузить за гораздо меньшее время. Ожидается ли это?

#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";