سجلّ الأداء

يدعم 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);

عند تفعيل هذا الخيار، يجمع سجلّ الأداء "المخطّط الزمني" و"الشبكة" و"الصفحة" أحداث. لتفعيل التتبع أيضًا أو لتخصيص تسجيل الأداء، السابقة.

اطّلِع على مثال كامل لتسجيل الأداء باستخدام الخيارات التلقائية (تمّت الإشارة إلى صاحب العمل: مايكل كليبيكوف).

تستخدم منصة 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 المؤقتة في 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 وهي "المتصفح". نظرًا لأن الأحداث البيانات على مستوى المتصفح.

هناك طريقتان محتملتان لأحداث التتبُّع:

  • 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
        }
    }
}