Правильный способ проверить время загрузки страницы в selenium?
Я пытаюсь программно проверить время загрузки списка веб-сайтов. Цель состоит в том, чтобы примерно имитировать время загрузки страницы, которое пользователь будет воспринимать.
мой первый подход-вызвать следующее внутри цикла:
startTime = System.currentTimeMillis();
driver.get("http://" + url);
diff = System.currentTimeMillis() - startTime;
System.out.println("Load time was " + diff);
проблема в том, что иногда я получаю результат времени до того, как страница действительно загрузилась (i.e я получаю 50ms раз), поэтому я думаю, что контроль передается следующей инструкции перед driver.get()
завершено.
Что делать чтобы улучшить этот тест?
EDIT:
Как предложил user1258245, я мог бы подождать загрузки элемента, но проблема в том, что я не знаю, какие страницы будут загружаться заранее.
1 ответов
есть 2 способа сделать это, что даст вам значимые данные.
-
использовать Browsermob прокси с селеном. Это пример в python, но его в значительной степени то же самое в Java
from browsermobproxy import Server server = Server("path/to/browsermob-proxy") server.start() proxy = server.create_proxy() from selenium import webdriver profile = webdriver.FirefoxProfile() profile.set_proxy(proxy.selenium_proxy()) driver = webdriver.Firefox(firefox_profile=profile) proxy.new_har("google") driver.get("http://www.google.co.uk") proxy.har # returns a HAR JSON blob proxy.stop() driver.quit()
файл HAR, который возвращается из proxy.har
, который является просто JSON blob, даст вам необходимую информацию. Я!--12-- > в блоге об этом в начале этого года
-
другой подход заключается в использовании навигационные тайминги доступны в современных браузерах. Все, что вам нужно сделать, это выполнить некоторый javaScript, и вы получите подробную информацию о загрузке страницы и т. д.
((JavascriptExecutor)driver).executeScript("var performance = window.performance || {};" + "var timings = performance.timing || {};"+ "return timings;"); /* The hashmap returned will contain something like the following. * The values are in milliseconds since 1/1/1970 * * connectEnd: 1280867925716 * connectStart: 1280867925687 * domainLookupEnd: 1280867925687 * domainLookupStart: 1280867925687 * fetchStart: 1280867925685 * legacyNavigationStart: 1280867926028 * loadEventEnd: 1280867926262 * loadEventStart: 1280867926155 * navigationStart: 1280867925685 * redirectEnd: 0 * redirectStart: 0 * requestEnd: 1280867925716 * requestStart: 1280867925716 * responseEnd: 1280867925940 * responseStart: 1280867925919 * unloadEventEnd: 1280867925940 */