#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.