【问题标题】:Selenium webdriver- get performance logs- unknown date timestamp (12345.12345)Selenium webdriver-获取性能日志-未知日期时间戳(12345.12345)
【发布时间】:2021-09-08 06:25:09
【问题描述】:

我最近一直在使用 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}

代码sn-p:

 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();

【问题讨论】:

  • 时间戳似乎是自 2021 年 5 月末某个随机点以来的秒数。

标签: java selenium google-chrome selenium-chromedriver google-chrome-devtools


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    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/

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

    【讨论】:

      猜你喜欢
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-01
      • 2021-09-10
      相关资源
      最近更新 更多