Требуется для записи сведений о мониторе производительности из инструментов Chrome Dev в программу Java - PullRequest
2 голосов
/ 20 марта 2019

Я запускаю тест на селен, написанный на Java.В рамках теста я пытаюсь захватить / извлечь текущее «Использование ЦП» и «Размер кучи JS» браузера и распечатать его в консоли.
Есть ли способ добиться этого в коде Java, выполнив JavaScriptкоманда или что-то.

• Загрузка ЦП - какой процент вашего ЦП использует сайт.
• Размер кучи JS - сколько памяти (в мегабайтах) используется приложением.

Я всегда запускаю тест в браузере Chrome.Пожалуйста, учтите, что мой тестовый сценарий содержит простой логин для веб-сайта.

Screenshot of performance monitor

1 Ответ

1 голос
/ 20 марта 2019

Поскольку селен может взаимодействовать только с самим браузером, я не думаю, что вы можете использовать его для загрузки ЦП с сервера, и то же самое с размером кучи JS.

Вы можете получить Java размер кучи, созданной вашим скриптом;это будет доступно для селена.Но я не думаю, что вы можете получить информацию об использовании сервера без какого-либо другого инструмента или без непосредственного изучения сервера.

РЕДАКТИРОВАТЬ

После немного больше размышлений и поиска вы сможете получитьваш JS размер кучи с использованием Selenium JavascriptExecutor, так что вы должны иметь возможность получить значение window.performance.memory.usedJSHeapSize на любом этапе тестирования.Ниже приведен код.

  public static Double reportMemoryUsage(WebDriver webDriver, String message) {
    ((JavascriptExecutor) webDriver).executeScript("window.gc()");
    try {
        TimeUnit.SECONDS.sleep(2);
    } catch (InterruptedException e) {
        LOGGER.error(e.getLocalizedMessage());
    }
    return Double usedJSHeapSize = (Double) ((JavascriptExecutor) webDriver)
            .executeScript("return window.performance.memory.usedJSHeapSize/1024/1024");
    LOGGER.info("Memory Usage at " + usedJSHeapSize + " MB.”);
 }

Если вы вызываете этот метод один раз в начале вашего набора тестов и один раз в конце, разница между двумя значениями usedJSHeapSize должна обеспечивать пространство кучи, вызываемое вашим сценарием Selenium.

Я принудительно собираю мусор перед использованием usedJSHeapSize, чтобы убедиться, что информация о мусоре не собирается.Чтобы включить функцию gc в окне, вам нужно установить опцию -js-flags=--expose-gc.

ChromeOptions options = new ChromeOptions();
options.addArguments("-js-flags=--expose-gc");
WebDriver webDriver = new ChromeDriver(options);

Дайте мне знать, если вы все еще хотите найти размер кучи Java из вашего скрипта иЯ думаю, что могу придумать что-нибудь для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...