Nhật ký hiệu suất

ChromeDriver hỗ trợ tính năng ghi nhật ký hiệu suất, từ đó bạn có thể nhận được các sự kiện về "Dòng thời gian", "Mạng" và "Trang", cũng như dữ liệu theo dõi cho các danh mục dấu vết được chỉ định.

Bật nhật ký hiệu suất

Tính năng ghi nhật ký hiệu suất KHÔNG được bật theo mặc định. Vì vậy, khi tạo một phiên mới, bạn phải bật tính năng này.

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

Khi được bật, nhật ký hiệu suất sẽ thu thập Dòng thời gian, Mạng và Trang các sự kiện. Để bật tính năng theo dõi hoặc tuỳ chỉnh tính năng ghi nhật ký hiệu suất, hãy giữ đọc tin tức.

Hãy xem ví dụ đầy đủ về cách ghi nhật ký hiệu suất với các tuỳ chọn mặc định (thông tin: Michael Klepikov).

Angular Benchpress cũng sử dụng tính năng ghi nhật ký hiệu suất.

Theo dõi và ghi nhật ký tuỳ chỉnh

Nếu cần tuỳ chỉnh tính năng ghi nhật ký hiệu suất, chẳng hạn như để bật tính năng theo dõi, bạn có thể sử dụng chức năng perfLoggingPrefs (thông qua ChromeOptions). Có thể bật theo dõi bằng cách chỉ định một hoặc nhiều Chrome các danh mục dấu vết. Đọc thêm thông tin về Theo dõi trên Chrome.

Khi tính năng theo dõi được bật, miền Dòng thời gian sẽ ngầm ẩn. Bạn vẫn cần bật nhật ký hiệu suất bằng chức năng 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);

Bạn cũng có thể sử dụng perfLoggingPrefs để bật hoặc tắt Mạng và Trang tên miền riêng lẻ. Ví dụ: bạn có thể bật miền Mạng một cách rõ ràng trong khi theo dõi:

...

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

...

Nếu tính năng theo dõi được bật, ChromeDriver sẽ bắt đầu theo dõi trên toàn trình duyệt khi Chrome khởi chạy và tiếp tục theo dõi cho đến khi Chrome đóng. Khi một dấu vết là đang chạy, Chrome sẽ lưu các sự kiện theo dõi trong bộ nhớ cho đến khi ngừng theo dõi.

Khi bộ đệm theo dõi đầy, các sự kiện theo dõi sẽ không được ghi lại nữa. Cần tránh bộ đệm đầy đủ (và do đó mất dữ liệu theo dõi), ChromeDriver định kỳ dừng theo dõi hiện tại, thu thập các sự kiện được lưu vào vùng đệm và bắt đầu lại hoạt động theo dõi ở một số điểm trong một thử nghiệm.

Việc thu thập các sự kiện theo dõi có thể làm tăng mức hao tổn kiểm thử, vì vậy, chỉ ChromeDriver thu thập các sự kiện theo dõi tại các thời điểm thích hợp trong quá trình kiểm thử. Hiện tại, hãy theo dõi các sự kiện chỉ được thu thập trên các sự kiện điều hướng trang và khi một ChromeDriver bất kỳ nhật ký (chẳng hạn như nhật ký hiệu suất) được yêu cầu. Luôn có khả năng bộ đệm vẫn lấp đầy nên ChromeDriver theo dõi mức sử dụng bộ đệm các phiên bản Chrome được hỗ trợ (r263512 trở lên). Nếu vùng đệm lấp đầy, ChromeDriver ghi nhật ký cảnh báo và thêm một mục vào nhật ký hiệu suất.

Đang thu thập mục nhập nhật ký

Trong kiểm thử này, bạn có thể nhận được các mục nhập nhật ký hiệu suất. Đọc Tài liệu ghi nhật ký WebDriver để biết thêm thông tin.

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

Mỗi mục là một chuỗi JSON có cấu trúc sau:

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

Giá trị phương thức là phương thức của sự kiện DevTools. Ví dụ: các sự kiện trên Dòng thời gian có phương thức là Timeline.eventRecorded cho tất cả của giao thức này lên đến và bao gồm phiên bản 1.1 (phiên bản mới nhất tại thời điểm đó nội dung này).

Mục nhập nhật ký theo dõi

Tính năng theo dõi không phải là một phần của giao thức Công cụ cho nhà phát triển đã xuất bản kể từ phiên bản 1.1, vì vậy thông tin chi tiết được cung cấp tại đây.

Tất cả sự kiện theo dõi đều có giá trị chế độ xem web là "browser" vì các sự kiện đều được thu thập trên toàn trình duyệt.

Có thể có hai phương thức sự kiện theo dõi:

  • tracing.dataCollected: tham số là một sự kiện theo dõi duy nhất dưới dạng một từ điển.
  • tracing.bufferUsage: các tham số chứa một khoá lỗi duy nhất, kèm theo thông báo cho biết rằng vùng đệm theo dõi Công cụ cho nhà phát triển được điền trong quá trình kiểm thử.

Dưới đây là một ví dụ về sự kiện theo dõi:

{
    "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
        }
    }
}