יומן ביצועים

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 Tracing.

כשהמעקב מופעל, הדומיין של ציר הזמן מושבת באופן לא מפורש. אתה עדיין צריך להפעיל את יומן הביצועים עם היכולת 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.
}

ערך ה-method הוא השיטה של האירוע של כלי הפיתוח. לדוגמה, אירועים בציר הזמן מוגדרים כ-Timeline.eventRecorded לכל התאריכים גרסאות 1.1 עד וכולל גרסאות 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
        }
    }
}