效能記錄

ChromeDriver 支援效能記錄功能,您可以透過這項功能取得 網域為「時間軸」、「聯播網」和「網頁」 追蹤記錄資料 指定的追蹤記錄類別。

啟用效能記錄檔

效能記錄預設為「不」啟用。在建立新的工作階段時 必須先啟用該功能

DesiredCapabilities cap = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"), cap);

啟用後,效能記錄會收集時間軸、聯播網和網頁 事件。如要同時啟用追蹤功能或自訂效能記錄功能,請 讀取。

查看含預設選項的效能記錄完整範例 (來源:Michael Klepikov)。

Angular Benchpress 也使用效能記錄。

追蹤和自訂記錄

如果您需要自訂效能記錄、啟用追蹤功能,您可以 可以使用 perfLoggingPrefs 功能 (透過 ChromeOptions)。指定一或多個 Chrome 即可啟用追蹤功能 追蹤記錄類別。進一步瞭解 Chrome 追蹤

啟用追蹤功能後,系統會間接停用時間軸網域。你 您必須啟用具有 loggingPrefs 功能的效能記錄。

DesiredCapabilities cap = DesiredCapabilities.chrome();
LoggingPreferences logPrefs = new LoggingPreferences();
logPrefs.enable(LogType.PERFORMANCE, Level.ALL);
cap.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);
Map<String, Object> perfLogPrefs = new HashMap<String, Object>();
perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools"); // comma-separated trace categories
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);
caps.setCapability(ChromeOptions.CAPABILITY, options);
RemoteWebDriver driver = new RemoteWebDriver(new URL("http://127.0.0.1:9515"), cap);

您也可以使用 perfLoggingPrefs 啟用或停用「網路和專頁」功能 舉例來說,您可以明確啟用 進行追蹤:

...

Map<String, Object> perfLogPrefs = new HashMap<String, Object>();
perfLogPrefs.put("traceCategories", "browser,devtools.timeline,devtools");
perfLogPrefs.put("enableNetwork", true);
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("perfLoggingPrefs", perfLogPrefs);
caps.setCapability(ChromeOptions.CAPABILITY, options);

...

啟用追蹤功能後,ChromeDriver 會在 Chrome 執行整個瀏覽器追蹤作業 持續追蹤,直到 Chrome 關閉為止。如果追蹤記錄 執行時,Chrome 會將追蹤事件保留在記憶體中,直到追蹤記錄停止為止。

追蹤緩衝區用盡後,系統就不會再記錄追蹤事件。為了避免 完整緩衝區 (並因此遺失追蹤資料),ChromeDriver 會定期停止 目前的追蹤記錄、收集緩衝事件,並在特定情況下重新啟動追蹤 測試資料點

收集追蹤記錄事件可能會增加測試負擔,因此只能使用 ChromeDriver 在測試期間的適當時間點收集追蹤事件。目前,追蹤記錄 系統只會在網頁導覽事件和任何 ChromeDriver 時收集事件 和紀錄 (例如成效紀錄) 之間在任何情況下 讓緩衝區仍填滿,因此 ChromeDriver 會監控緩衝區使用情況 支援的 Chrome 版本 (r263512 以上版本)。如果緩衝區填滿,ChromeDriver 會記錄警示,並在效能記錄中新增一個項目。

收集記錄項目

在測試中,您可以取得效能記錄項目。閱讀 WebDriver 記錄說明文件 瞭解詳情

for (LogEntry entry : driver.manage().logs().get(LogType.PERFORMANCE)) {
  System.out.println(entry.toString());
}

每個項目都是下列結構的 JSON 字串:

{
  "webview": <originating WebView ID>,
  "message": { "method": "...", "params": { ... }} // DevTools message.
}

此方法是開發人員工具事件的方法。 舉例來說,時間軸事件在所有項目的 Timeline.eventRecorded 方法中都屬於 最新版本的通訊協定版本,包括 1.1 版 (當時最新的版本) 名稱)。

追蹤記錄記錄項目

追蹤版本並未包含在已發布的開發人員工具通訊協定 1.1 版中,因此, 詳細資料

所有追蹤記錄事件的 WebView 值都是「browser」因為事件 收集到各個瀏覽器的資料

追蹤事件的方法有兩種:

  • tracing.dataCollected:參數是以字典的形式呈現的單一追蹤記錄事件。
  • tracing.bufferUsage:參數包含單一錯誤鍵,並顯示訊息指出開發人員工具追蹤緩衝區在測試期間已填入內容。

以下是追蹤事件範例:

{
    "webview":"browser",
    "message":{
        "method":"Tracing.dataCollected",
        "params":{
            "args":{"layerTreeId":1},
            "cat":"cc,devtools",
            "name":"DrawFrame",
            "ph":"i",
            "pid":11405,
            "s":"t",
            "tid":11405,
            "ts":3846117219.0,
            "tts":1134680
        }
    }
}