Navigation timing API

Navigation timing - javascript API для измерения производительности веб приложений, утвержденный организацией W3C в качестве стандарта.

Navigation timing предоставляет простой и прямой способ получения точных данных о загрузке страницы (page navigation) и событиях при загрузке страницы (load events). Этот API доступен в IE 9, firefox, chrome и webkit-based браузерах.

Доступ к API можно получить через свойства интерфейса window.performance.timing с помощью javascript. Каждый атрибут объекта performance.timing хранит время того или иного навигационного события, когда был послан запрос на сервер (request), в милисекундах в формате UTC (в миллисекундах с первого января 1970 года). Нуль означает, что событие е поизошло.

Очередность событий при загрузке страницы изображена на диаграмме:

Более подробно про эти события можно прочитать в самом стандарте Navigation Timing: http://www.w3.org/TR/navigation-timing/

Пример:

@Test
public void testLogin() {
    Webdriver driver = new FirefoxDriver();
    driver.get(SOME_URL);
    JavascriptExecutor js = (JavascriptExecutor) driver;
    // Получаем время Load Event End (окончание загрузки страниы)
    long loadEventEnd = (Long) js.executeScript("return window.performance.timing.loadEventEnd;");
    // Получаем Navigation Event Start (начало перехода)
    long navigationStart = (Long) js.executeScript("return window.performance.timing.navigationStart;");
    // Разница между Load Event End и Navigation Event Start - это время загрузки страницы
    System.out.println("Page Load Time is " + (loadEventEnd - navigationStart)/1000 + " seconds.");
}