Рассчитать время загрузки страницы с помощью окна Javascript window.performance.timing - PullRequest
0 голосов
/ 23 сентября 2019

Я могу рассчитать время загрузки страницы в селене с помощью следующего кода:

Код : Селен C #

using OpenQA.Selenium;
double requestStart = (long)((IJavaScriptExecutor)CTest.Driver).ExecuteScript("return window.performance.timing.requestStart");
double domComplete = (long)((IJavaScriptExecutor)CTest.Driver).ExecuteScript("return window.performance.timing.domComplete");
var totaltime = domComplete - requestStart;

Из-за ошибок и следов я былВ состоянии определить, что totaltime вышеуказанный код соответствует значению Load на рисунке ниже. Загрузка в изображении всегда совпадает со значением переменной DOMContentLoaded.

Вопрос :

  1. Почему значение для Готово не совпадает?Что такое Finish и как вы рассчитываете это с помощью объекта javascript window.performance.timing?
  2. Как рассчитать время между вводом URL-адреса в веб-браузер (и нажатием Enter) ивремя, когда весь контент на странице наконец загружен?

Следующий документ довольно хорошо описал то, что измеряла каждая временная переменная переменные метки времени разработчика mozilla , но значение Finish в chrome devtools мутновода.

Рисунок : извлечение информации о производительности из вкладки Chrome Devtool (F12) Network

enter image description here


Редактировать :

Спасибо @wOxxOm.Я заметил, что время Finish продолжало увеличиваться, когда я взаимодействовал с сайтом (переходил на другие страницы сайта), тогда как DOMContentLoaded и Load никогда не менялись после первоначальногособытие загрузки.Это соответствует тому, что вы говорите в своем ответе.Я переключился на использование следующего кода, как вы предложили:

double connectStart = (long)((IJavaScriptExecutor)CTest.Driver).ExecuteScript("return window.performance.timing.connectStart");
double loadEventEnd = (long)((IJavaScriptExecutor)CTest.Driver).ExecuteScript("return window.performance.timing.loadEventEnd");
double newMeasure = (loadEventEnd - connectStart) / 1000.0;

Также начал изучать функцию LCP в Chrome 77.

У меня возник еще один вопрос

Вопрос 2: Сначала я думал, что значения в объекте window.performance будут заполнены новыми значениями (разами), когда я нажал на ссылку (на веб-сайте), которая приведет меня кдругая страница на том же сайте.Однако все значения window.performance никогда не меняются после начальной загрузки веб-сайта (значения DOMContentLoaded и Load в сетевом окне Chrome devtool также никогда не менялись при маневрировании на веб-сайте).

Вопрос: Почему значения из window.performance никогда не менялись?Это потому, что это SPA (одностраничное приложение)?Я наблюдал значения DOMContentLoaded и Load в chrome devtool при переходе по другому веб-сайту (более старому), и каждый раз, когда я переходил на новую страницу в этом веб-сайте, DOMContentLoaded и Загрузить раз изменилось, чтобы показать время загрузки для каждой страницы на веб-сайте (переход на разные страницы осуществляется по ссылке в главном меню этого веб-сайта).

...