微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Selenium webdriver-获取性能日志-未知日期时间戳12345.12345

如何解决Selenium webdriver-获取性能日志-未知日期时间戳12345.12345

我最近一直在使用 selenium webdriver 和 chrome 以及日志。但是任何时间戳值都以奇怪的日期时间戳格式返回。我找遍了,我不知道它是什么。此外,时间戳以外的其他值(如 requestId 或 walltime)也采用新的未知格式。这是什么格式,我怎样才能把它变成正常的 (MM DD YYYY HH:MM:SS..) 格式?

时间戳是 2484894.662632,大约在 2021 年 6 月 23 日,10:53:23.118 时间戳是 2486019.900761,大约在 2021 年 6 月 23 日,11:12:01.277 时间戳是 2581839.545059,大约在 2021 年 6 月 24 日,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();

解决方法

从您获得这些戳记的 3 个日期时间中减去时间戳记为秒,我可以推断时间戳表示自 2021 年 5 月 25 日 16:38:25 +- 5 秒以来经过的秒数。所有三个时间戳同意这是起源。

别问我为什么起源在那个时候。可能是当时电脑开机了,或者某个数字溢出,又从0开始。

enter image description here

,

有两种方法可以得到想要的结果:

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 && "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/ enter image description here

注意:请提供确切的要求,您到底想得到什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。