Performans günlüğü

ChromeDriver, aşağıdaki etkinliklerle ilgili bilgileri alabileceğiniz performans günlük kaydını destekler: ve "Zaman Çizelgesi", "Ağ" ve "Sayfa" gibi izleme verileri izin verilmez.

Performans günlüklerini etkinleştir

Performans günlük kaydı varsayılan olarak ETKİNLEŞTİRİLMEZ. Bu nedenle, yeni bir oturum oluştururken bunu etkinleştirmeniz gerekir.

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

Performans günlüğü etkinleştirildiğinde Zaman Çizelgesi, Ağ ve Sayfa verileri toplanır etkinlikler. Ayrıca izlemeyi etkinleştirmek veya performans günlüğünü özelleştirmek için okumayı öğreteceğim.

Varsayılan seçeneklerle performans günlüğü kaydının eksiksiz bir örneğini inceleyin (kaynak: Michael Klepikov).

Angular Benchpress, performans günlük kaydını da kullanır.

İzleme ve özel günlük kaydı

Performans günlük kaydını özelleştirmeniz gerekirse, örneğin izlemeyi etkinleştirmek için perfLoggingPrefs özelliğini kullanabilir. (ChromeOptions aracılığıyla). İzleme, bir veya daha fazla Chrome belirtilerek etkinleştirilebilir izin verir. Şununla ilgili daha fazla bilgi edinin: Chrome izleme.

İzleme etkinleştirildiğinde, Zaman Çizelgesi alanı dolaylı olarak devre dışı bırakılır. Hâlâ performans günlüğünün loggingPrefs özelliğiyle etkinleştirilmesi gerekir.

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

Ağ ve Sayfayı etkinleştirmek veya devre dışı bırakmak için perfLoggingPrefs öğesini de kullanabilirsiniz kullanabilirsiniz. Örneğin, Ağ alanını açıkça etkinleştirebilirsiniz. izlerken:

...

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

...

İzleme etkinse ChromeDriver, Chrome'u çalıştırdığında tarayıcı genelinde bir izleme başlatır. başlatılır ve Chrome kapatılana kadar izlemeye devam eder. Bir iz, çalışırken Chrome, izleme durdurulana kadar bellekteki etkinlikleri arabelleğe alır.

İz arabelleği dolduktan sonra izleme etkinlikleri kaydedilmez. Kaçınılması gerekenler tam arabellek (ve dolayısıyla kayıp iz verileri) bulunduğunda, ChromeDriver izler, arabelleğe alınan etkinlikleri toplar ve izlemeyi belirli bir saatte yeniden başlatır puan almanız mümkün.

İzleme etkinliklerini toplamak bir teste ek yük ekleyebilir. Bu nedenle yalnızca ChromeDriver test sırasında uygun noktalarda izleme etkinliklerini toplar. Şu anda, etkinlikler yalnızca sayfada gezinme etkinliklerinde ve herhangi bir ChromeDriver günlüğü (performans günlüğü gibi) istenir. Her zaman bir ihtimal var doldurmaya devam eder. Böylece, ChromeDriver arabellek kullanımını desteklenen Chrome sürümlerini (r263512 ve sonraki sürümleri) kullanın. Arabellek dolduysa ChromeDriver günlüğe bir uyarı kaydeder ve performans günlüğüne bir giriş ekler.

Günlük girişlerini toplama

Testte, performans günlüğü girişleri alabilirsiniz. Şunu okuyun: WebDriver günlük kaydı belgeleri konulu videomuzu izleyin.

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

Her giriş, aşağıdaki yapının bir JSON dizesidir:

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

Yöntem değeri, Geliştirici Araçları etkinliğinin yöntemidir. Örneğin, Zaman Çizelgesi etkinliklerinde yöntemin tümü için Timeline.eventRecorded kullanılır 1.1 sürümüne (aynı zamanda en son sürüm) kadarki, protokolün sürümleri bu yazıldı).

İz günlüğü girişleri

İzleme, sürüm 1.1'den itibaren yayınlanan Geliştirici Araçları protokolünün bir parçası değildir. ayrıntıları burada bulabilirsiniz.

Tüm izleme etkinliklerinin web görünümü değeri "tarayıcı"dır. çünkü bu etkinlikler toplanan verileri görebilirsiniz.

Olası iki izleme etkinliği yöntemi vardır:

  • tracing.dataCollected: Parametreler, sözlük biçimindeki tek bir iz etkinliğidir.
  • tracing.bufferUsage: Parametreler, test sırasında Geliştirici Araçları iz arabelleğinin doldurulduğunu belirten bir mesajla birlikte tek bir hata anahtarı içerir.

Aşağıda örnek bir izleme etkinliği verilmiştir:

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