Selenium webdriver — получение журналов производительности — неизвестная дата и время (12345.12345)

#java #selenium #google-chrome #selenium-chromedriver #google-chrome-devtools

Вопрос:

В последнее время я использую selenium webdriver и chrome и журналы. Но любые значения временных меток возвращаются в странном формате даты и времени. Я все обыскал и не могу понять, что это такое. Кроме того, другие значения, помимо метки времени (например, идентификатор запроса или время на стене), также находятся в новых неизвестных форматах. Что это за формат и как я могу перевести его в обычный (ММ ДД ГГГГ ЧЧ:ММ:СС..) формат?

метка времени была 2484894.662632 около 23 июня 2021 года, 10:53:23.118 метка времени была 2486019.900761 около 23 июня 2021 года, 11:12:01.277 метка времени была 2581839.545059 около 24 июня 2021 года, 13:49:09.354

Пример:

 "requestId":"30432.634","timestamp":87693.142713,"type":"XHR","wallTime":1624556888.229531}
 

Фрагмент кода:

  LoggingPreferences logPrefs = new LoggingPreferences();
 logPrefs.enable(LogType.BROWSER, Level.ALL);
 logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
 flavorCapability.setCapability("goog:loggingPrefs", logPrefs);


 driver.manage().logs().get(LogType.PERFORMANCE).getAll();
 

Комментарии:

1. Временная метка, похоже, составляет секунды с какой — то случайной точки в конце мая 2021 года.

Ответ №1:

Есть два способа получить желаемый результат:

1) Простой способ:

 LogEntries entries =  driver.manage().logs().get(LogType.PERFORMANCE);

        for(LogEntry entry: entries){
            System.out.println(entry.getTimestamp());
            System.out.println(entry.getLevel());
            System.out.println(entry.getMessage());
            System.out.println(entry.toJson());
            System.out.println(new Date(entry.getTimestamp()));
        }
 

2) Второй способ сделать это:

 import org.json.JSONException;
import org.json.JSONObject;



LogEntries logs = driver.manage().logs().get("performance");
    for (Iterator<LogEntry> it = logs.iterator(); it.hasNext();) {
        LogEntry entry = it.next();
        try {
            JSONObject json = new JSONObject(entry.getMessage());
            JSONObject message = json.getJSONObject("message");
            String method = message.getString("method");
            System.out.println(method);
            if (method != null amp;amp; "Network.responseReceived".equals(method)) {
                JSONObject params = message.getJSONObject("params");
                JSONObject response = params.getJSONObject("response");
                JSONObject headers = response.getJSONObject("headers");
                String timestamp = headers.getString("date");

                String url = response.getString("url");
                int status = response.getInt("status");

                System.out.println("Response = "   response);
                System.out.println("URL = "  url);
                System.out.println("Status Code = "  status);
                System.out.println("headers: "   response.get("headers"));
                System.out.println("Timestamp: "   timestamp);

            }
        } catch (JSONException e) {
            System.out.println(e.getMessage());
        }
    }
 

Ссылка: https://chromedevtools.github.io/devtools-protocol/tot/Network/
введите описание изображения здесь

Примечание: Пожалуйста, укажите точное требование, что именно вы хотите получить?

Ответ №2:

Вычитая метку времени в секундах из 3 дат, когда вы получили эти метки, я мог бы сделать вывод, что метка времени означает количество секунд, прошедших с 16:38:25 — 5 секунд 25 мая 2021 года. Все три метки времени согласны с тем, что это источник.

Не спрашивайте меня, почему происхождение происходит в то время. Возможно, в это время компьютер загрузился, или какое-то число переполнилось и снова началось с 0.

введите описание изображения здесь