如何计算来自 chrome 驱动程序性能日志的一个请求的总时间?
how to calculate total time for one request from chrome driver PERFORMANCE logs?
我正在使用 selenium 来跟踪网站的网络流量。
我已经关注了两个链接:
1.
2.http://chromedriver.chromium.org/logging/performance-log
我得到了配置后的日志数据。
您可以参考第 2 点的示例数据:
这是我得到的
[2015-03-21T16:50:20+0400] [信息] {"message":{"method":"Network.responseReceived","params":{"frameId":"28480.1","loaderId":"28480.2","requestId":"28480.1","response":{"connectionId":0,"connectionReused":false ,"encodedDataLength":-1,"fromDiskCache":false,"fromServiceWorker":false,"headers":{"Access-Control-Allow-Origin":"*","Content-Type":"text/plain;charset=US-ASCII"},"mimeType":"text/plain","protocol":"data","status":200,"statusText":"OK", "url":"data:,"},"timestamp":1426942217.5344,"type":"Other"}},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"}
[2015-03-21T16:50:20+0400] [信息] {"message":{"method":"Network.loadingFinished","params":{"encodedDataLength":0 ,"requestId":"28480.1","timestamp":1426942217.5344}},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"}
[2015-03-21T16:50:20+0400] [信息] {"message":{"method":"Page.frameNavigated","params":{"frame":{ "id":"28480.1","loaderId":"28480.2","mimeType":"text/plain","securityOrigin":"://","url": "data:,"}}},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"}
[2015-03-21T16:50:21+0400] [信息] {"message":{"method":"Page.loadEventFired","params":{"timestamp":1426942220.99924 }},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"}
[2015-03-21T16:50:21+0400] [信息] {"message":{"method":"Page.frameStoppedLoading","params":{"frameId":" 28480.1"}},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"}
[2015-03-21T16:50:21+0400] [信息] {"message":{"method":"Page.domContentEventFired","params":{"timestamp":1426942220.99927 }},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"}
....
但是我不知道如何计算一个请求xhr请求的时间?
我已经搜索过了,但现在运气好...
启用 PERFORMANCE 日志后,您可以使用以下方法迭代日志条目:
List<LogEntry> entries = this.driver.manage().logs().get(LogType.PERFORMANCE).getAll();
然后,您可以获得具有以下值的json:
private String url;
private Boolean timing;
private Long connectEnd;
private Long connectStart;
private Long dnsEnd;
private Long dnsStart;
private Long receiveHeadersEnd;
private Long sslStart;
private Long sslEnd;
private Long proxyStart;
private Long proxyEnd;
private Long sendStart;
private Long sendEnd;
private String mimeType;
private String requestStatus;
private String method;
要获取单个请求的总时间,您可以使用:
发送开始 - 发送结束
创建 Chrome 驱动程序:
DesiredCapabilities capabilities = new DesiredCapabilities();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
logPrefs.enable(LogType.DRIVER, Level.ALL);
capabilities.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
Map<String, Object> perfLogPrefs = new HashMap<String, Object>();
perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(capabilities);
我正在使用 selenium 来跟踪网站的网络流量。
我已经关注了两个链接:
1.
我得到了配置后的日志数据。 您可以参考第 2 点的示例数据: 这是我得到的
[2015-03-21T16:50:20+0400] [信息] {"message":{"method":"Network.responseReceived","params":{"frameId":"28480.1","loaderId":"28480.2","requestId":"28480.1","response":{"connectionId":0,"connectionReused":false ,"encodedDataLength":-1,"fromDiskCache":false,"fromServiceWorker":false,"headers":{"Access-Control-Allow-Origin":"*","Content-Type":"text/plain;charset=US-ASCII"},"mimeType":"text/plain","protocol":"data","status":200,"statusText":"OK", "url":"data:,"},"timestamp":1426942217.5344,"type":"Other"}},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"} [2015-03-21T16:50:20+0400] [信息] {"message":{"method":"Network.loadingFinished","params":{"encodedDataLength":0 ,"requestId":"28480.1","timestamp":1426942217.5344}},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"} [2015-03-21T16:50:20+0400] [信息] {"message":{"method":"Page.frameNavigated","params":{"frame":{ "id":"28480.1","loaderId":"28480.2","mimeType":"text/plain","securityOrigin":"://","url": "data:,"}}},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"} [2015-03-21T16:50:21+0400] [信息] {"message":{"method":"Page.loadEventFired","params":{"timestamp":1426942220.99924 }},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"} [2015-03-21T16:50:21+0400] [信息] {"message":{"method":"Page.frameStoppedLoading","params":{"frameId":" 28480.1"}},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"} [2015-03-21T16:50:21+0400] [信息] {"message":{"method":"Page.domContentEventFired","params":{"timestamp":1426942220.99927 }},"webview":"C359224A-06E5-42B6-8D1B-52687733920A"} ....
但是我不知道如何计算一个请求xhr请求的时间?
我已经搜索过了,但现在运气好...
启用 PERFORMANCE 日志后,您可以使用以下方法迭代日志条目:
List<LogEntry> entries = this.driver.manage().logs().get(LogType.PERFORMANCE).getAll();
然后,您可以获得具有以下值的json:
private String url;
private Boolean timing;
private Long connectEnd;
private Long connectStart;
private Long dnsEnd;
private Long dnsStart;
private Long receiveHeadersEnd;
private Long sslStart;
private Long sslEnd;
private Long proxyStart;
private Long proxyEnd;
private Long sendStart;
private Long sendEnd;
private String mimeType;
private String requestStatus;
private String method;
要获取单个请求的总时间,您可以使用:
发送开始 - 发送结束
创建 Chrome 驱动程序:
DesiredCapabilities capabilities = new DesiredCapabilities();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
logPrefs.enable(LogType.DRIVER, Level.ALL);
capabilities.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
Map<String, Object> perfLogPrefs = new HashMap<String, Object>();
perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools");
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);
capabilities.setCapability(ChromeOptions.CAPABILITY, options);
WebDriver driver = new ChromeDriver(capabilities);