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);
เมื่อเปิดใช้ บันทึกประสิทธิภาพจะรวบรวมไทม์ไลน์ เครือข่าย และหน้าเว็บ กิจกรรม หากต้องการเปิดใช้การติดตามหรือปรับแต่งการบันทึกประสิทธิภาพด้วย ให้ การอ่าน
ดูตัวอย่างทั้งหมดของการบันทึกประสิทธิภาพพร้อมตัวเลือกเริ่มต้น (เครดิต: Michael Klepikov)
นอกจากนี้ Angular Benchpress ยังใช้การบันทึกประสิทธิภาพอีกด้วย
การติดตามและการบันทึกที่กำหนดเอง
เช่น หากต้องการปรับแต่งการบันทึกประสิทธิภาพ ในการเปิดใช้การติดตาม ก็สามารถใช้ความสามารถperfLakingPrefs (ผ่าน ChromeOptions) เปิดใช้การติดตามได้ด้วยการระบุ Chrome อย่างน้อย 1 รายการ ประเภทการติดตาม อ่านเพิ่มเติมเกี่ยวกับ การติดตาม 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 จะบัฟเฟอร์เหตุการณ์การติดตามในหน่วยความจำจนกว่าการติดตามจะหยุดลง
เมื่อบัฟเฟอร์การติดตามเต็มแล้ว ระบบจะไม่บันทึกเหตุการณ์การติดตามอีกต่อไป วิธีหลีกเลี่ยง บัฟเฟอร์เต็มรูปแบบ (ทำให้ข้อมูลการติดตามหายไป) 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 เป็น "เบราว์เซอร์" เนื่องจากเหตุการณ์ ที่รวบรวมทั้งเบราว์เซอร์
วิธีเหตุการณ์การติดตามที่เป็นไปได้มี 2 วิธีดังนี้
- 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
}
}
}