परफ़ॉर्मेंस लॉग

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

...

अगर ट्रेस करने की सुविधा चालू है, तो Chrome पर ChromeDriver पूरे ब्राउज़र पर ट्रेस की सुविधा शुरू करता है लॉन्च कर दिया गया है और 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.
}

तरीके की वैल्यू, DevTools इवेंट का तरीका है. उदाहरण के लिए, टाइमलाइन इवेंट में सभी के लिए Timeline.eventRecorded वाला तरीका होता है इस प्रोटोकॉल के वर्शन 1.1 तक के वर्शन और उस समय का सबसे नया वर्शन इसे लिखा गया था).

लॉग एंट्री ट्रेस करें

वर्शन 1.1 में, पब्लिश किए गए DevTools प्रोटोकॉल का हिस्सा ट्रेसिंग नहीं है. इसलिए विवरण यहां दिए गए हैं.

सभी ट्रेस इवेंट का वेबव्यू मान "ब्राउज़र" होता है क्योंकि ये इवेंट जिसे ब्राउज़र के हिसाब से इकट्ठा किया जाता है.

ट्रेस इवेंट के दो तरीके हो सकते हैं:

  • tracing.dataCollected: पैरामीटर, शब्दकोश के तौर पर सिर्फ़ एक ट्रेस इवेंट होता है.
  • tracing.bufferUsage: पैरामीटर में एक गड़बड़ी वाली कुंजी होती है. इसमें एक मैसेज होता है, जिससे पता चलता है कि जांच के दौरान DevTools ट्रेस बफ़र भरा गया है.

यहां ट्रेस इवेंट का एक उदाहरण दिया गया है:

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