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);
সক্রিয় করা হলে, কর্মক্ষমতা লগ টাইমলাইন, নেটওয়ার্ক এবং পৃষ্ঠা ইভেন্ট সংগ্রহ করে। ট্রেসিং সক্ষম করতে বা পারফরম্যান্স লগিং কাস্টমাইজ করতে, পড়তে থাকুন।
মাইকেল ক্লেপিকভ দ্বারা লেখা ডিফল্ট বিকল্পগুলির সাথে পারফরম্যান্স লগিংয়ের একটি সম্পূর্ণ উদাহরণ দেখুন।
কৌণিক বেঞ্চপ্রেস কর্মক্ষমতা লগিং ব্যবহার করে।
ট্রেসিং এবং কাস্টম লগিং
আপনি যদি পারফরম্যান্স লগিং কাস্টমাইজ করতে চান, উদাহরণস্বরূপ ট্রেসিং সক্ষম করতে, আপনি perfLoggingPrefs ক্ষমতা ব্যবহার করতে পারেন (ChromeOptions এর মাধ্যমে)। এক বা একাধিক ক্রোম ট্রেস বিভাগ নির্দিষ্ট করে ট্রেসিং সক্ষম করা যেতে পারে। 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 বন্ধ না হওয়া পর্যন্ত ট্রেসিং চালিয়ে যায়। যখন একটি ট্রেস চলছে, তখন ট্রেস বন্ধ না হওয়া পর্যন্ত ক্রোম মেমরিতে ইভেন্ট ট্রেস করে।
একবার ট্রেস বাফার পূর্ণ হয়ে গেলে, ট্রেস ইভেন্টগুলি আর রেকর্ড করা হবে না। একটি সম্পূর্ণ বাফার (এবং এইভাবে হারিয়ে যাওয়া ট্রেস ডেটা) এড়াতে, 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
: params হল একটি অভিধান আকারে একটি একক ট্রেস ইভেন্ট। -
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
}
}
}