วิธีการระบุวัตถุทำงานอย่างไรใน QTP/UFT?
⚡ สรุปอย่างชาญฉลาด
การระบุวัตถุใน QTP/UFT กำหนดวิธีการที่เครื่องมือจดจำองค์ประกอบ GUI แต่ละรายการระหว่างการทดสอบ โดยเปรียบเทียบคุณสมบัติของวัตถุทดสอบที่จัดเก็บไว้กับคุณสมบัติของวัตถุที่ทำงานในขณะรันไทม์ เพื่อให้สคริปต์ยังคงทำงานได้แม้ว่าเค้าโครงหน้าจอจะเปลี่ยนแปลงไป
การระบุวัตถุใน คืออะไร UFT/QTP?
การระบุวัตถุคือกลไก UFT/QTP ใช้เพื่อจดจำองค์ประกอบ GUI บนหน้าจอ เพื่อให้สคริปต์สามารถดำเนินการกับองค์ประกอบนั้นได้อย่างน่าเชื่อถือ ในทุกๆ การทำงาน ระหว่างช่วงการบันทึก UFT โปรแกรมจะศึกษาคุณสมบัติเพียงเล็กน้อยของวัตถุที่อยู่ใต้ตัวชี้เมาส์และจัดเก็บไว้ ในระหว่างการเล่นซ้ำ โปรแกรมจะเปรียบเทียบค่าที่จัดเก็บไว้เหล่านั้นกับคุณสมบัติของวัตถุทุกชิ้นที่ปรากฏอยู่จริง และเลือกวัตถุที่ตรงกันที่สุดเพียงชิ้นเดียว โดยไม่คำนึงถึงตำแหน่งปัจจุบันของวัตถุนั้นบนหน้าจอ
วัตถุที่จัดเก็บไว้ พร้อมด้วยคุณสมบัติต่างๆ UFT จดจำสิ่งนั้นไว้ จึงเรียกว่า วัตถุทดสอบองค์ประกอบที่เกี่ยวข้องซึ่งปรากฏบนหน้าจอขณะที่การทดสอบทำงานคือ วัตถุรันไทม์การเปรียบเทียบทั้งสองในทุกขั้นตอนคือรากฐานของสิ่งที่ Micro Focus เรียกว่า... โมเดลวัตถุทดสอบและนี่คือเหตุผลว่าทำไม UFT สคริปต์ยังคงทำงานต่อไปแม้ว่าปุ่มจะขยับไปเพียงไม่กี่พิกเซลหรือหน้าเว็บจะถูกปรับเปลี่ยนรูปแบบใหม่ก็ตาม
คลังเก็บวัตถุและส่วนเสริม
UFT เก็บทุกอ็อบเจ็กต์ทดสอบที่เรียนรู้แล้ว พร้อมด้วยคุณสมบัติที่จัดเก็บไว้ภายใน ที่เก็บอ็อบเจ็กต์. Add-ins บอก การทดสอบอย่างรวดเร็ว ระบุล่วงหน้าว่าหน้าจอเป็นเทคโนโลยีประเภทใด เพื่อให้เครื่องมือทราบว่าชุดคุณสมบัติใดเหมาะสม และไม่ต้องคาดเดา ซึ่งช่วยลดเวลาในการเรียนรู้วัตถุลง
คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้
วัตถุทุกชิ้น UFT เรคอร์ดหนึ่งๆ สามารถบรรจุคุณสมบัติได้มากมายนับสิบอย่าง เฉพาะในสภาพแวดล้อมเว็บเพียงอย่างเดียว ปุ่มเพียงปุ่มเดียวอาจแสดงชื่อ แท็ก HTML ประเภท คลาส ดัชนี และอื่นๆ อีกมากมาย การบันทึกคุณสมบัติทั้งหมดสำหรับทุกอ็อบเจ็กต์นั้นเป็นไปได้ในทางเทคนิค แต่แทบจะไม่เป็นประโยชน์เลย ดังภาพถัดไปที่แสดงให้เห็นถึงรายการทั่วไปในคลังเก็บอ็อบเจ็กต์ (Object Repository)
If UFT หากพยายามจดจำคุณสมบัติทั้งหมดที่มีอยู่สำหรับแต่ละอ็อบเจ็กต์ ขนาดของ Object Repository จะเพิ่มขึ้นอย่างมาก และการทำงานของสคริปต์จะช้าลงอย่างเห็นได้ชัด เพื่อหลีกเลี่ยงปัญหานั้น QTP โดยค่าเริ่มต้นจะไม่บันทึกคุณสมบัติทุกอย่าง แต่จะบันทึกชุดคุณสมบัติทั่วไปขนาดเล็กสำหรับวัตถุแต่ละประเภท ซึ่งเป็นชุดที่เลือกมาเพื่อให้... บัตรประจำตัวที่ไม่ซ้ำ สามารถทำได้โดยไม่ต้องมีค่าใช้จ่ายเพิ่มเติม รายการคุณสมบัติที่คัดสรรมานี้ ซึ่งกำหนดแยกกันสำหรับแต่ละสภาพแวดล้อมและคลาสของวัตถุ จะถูกกำหนดค่าในการตั้งค่าการระบุวัตถุ ซึ่งจะกล่าวถึงต่อไป
วัตถุ Description: คุณสมบัติที่จำเป็นและคุณสมบัติที่ช่วยสนับสนุน
คุณสมบัติและมูลค่าของวัตถุรวมกันก่อให้เกิดอะไร UFT เรียกไฟล์ วัตถุ Descriptไอออน — การจัดเรียงที่แน่นอนที่เครื่องมือใช้ในการเลือกองค์ประกอบหนึ่งจากวัตถุอื่นๆ ทั้งหมดบนหน้าเว็บ ตัวอย่างเช่น สำหรับ WebButton คุณสมบัติคือ พร้อมชื่อ ด้วยค่า เข้าสู่ระบบ โดยตัวมันเองมักเพียงพอที่จะสร้างวัตถุที่ใช้งานได้ Descriptไอออน
หากต้องการตรวจสอบหรือเปลี่ยนแปลงพฤติกรรมนี้ ให้เปิด เครื่องมือ > การระบุวัตถุ ภายใน UFTหน้าต่างการระบุวัตถุจะแสดงรายการสภาพแวดล้อมทั้งหมดที่โหลดอยู่ในปัจจุบัน การเลือกสภาพแวดล้อมใดสภาพแวดล้อมหนึ่งจะทำให้คลาสของวัตถุถูกเติมข้อมูลโดยอัตโนมัติ UFT รองรับการทำงานดังกล่าว และแผงด้านขวาจะแสดงคุณสมบัติที่ถูกจัดเก็บไว้สำหรับวัตถุของคลาสนั้นอย่างชัดเจน รายการจะแบ่งออกเป็นสองกลุ่ม:
- คุณสมบัติบังคับ โดยค่าเริ่มต้น ข้อมูลเหล่านี้จะถูกจัดเก็บไว้สำหรับทุกอ็อบเจ็กต์ในคลาสนั้น ไม่ว่าข้อมูลเหล่านั้นจะจำเป็นต่อการแยกแยะอ็อบเจ็กต์นั้นออกจากอ็อบเจ็กต์ข้างเคียงหรือไม่ก็ตาม
- คุณสมบัติช่วยเหลือ จะถูกจัดเก็บเฉพาะในกรณีที่คุณสมบัติที่จำเป็นเพียงอย่างเดียวไม่สามารถสร้างคำอธิบายที่ไม่ซ้ำกันได้ — UFT ไล่ดูรายการนี้ทีละคุณสมบัติจนกว่าจะได้วัตถุที่ไม่ซ้ำกัน
ภาพประกอบบนเว็บไซต์ช่วยให้เข้าใจกฎได้ง่ายขึ้นเมื่อนำไปใช้จริง
- UFT ระบบจะจัดเก็บข้อความแสดงแทน (alt text), แท็ก HTML และประเภทรูปภาพสำหรับรูปภาพบนเว็บเสมอ แม้ว่าข้อความแสดงแทน (alt text) เพียงอย่างเดียวจะไม่ซ้ำกันก็ตาม
- หากคุณสมบัติที่จำเป็นไม่สามารถสร้างคำอธิบายที่ไม่ซ้ำกันได้ UFT เพิ่มคุณสมบัติคลาสจากรายการตัวช่วย
- เมื่อคุณสมบัติของที่พักนั้นมีความโดดเด่นไม่เหมือนใครแล้ว UFT หยุดการเพิ่มข้อมูลเพิ่มเติม — มันจะข้ามชื่อไฟล์และความสูงหากคลาสเพียงพอแล้ว ข้ามความสูงหากจำเป็นต้องใช้ชื่อไฟล์ และอื่นๆ
- สมมติว่ามีเพียงคุณสมบัติของคลาสเท่านั้นที่ถูกบันทึกไว้ในเวลาบันทึกข้อมูล ส่วนในเวลารันไทม์... UFT ระบบจะไม่แยกแยะอีกต่อไปว่าคุณสมบัติใดเป็นคุณสมบัติบังคับและคุณสมบัติใดเป็นคุณสมบัติเสริม — แต่จะเปรียบเทียบคุณสมบัติทั้งหมดในคำอธิบายที่บันทึกไว้กับวัตถุในขณะทำงานโดยตรง
- หากคุณสมบัติที่จัดเก็บไว้แม้เพียงรายการเดียวไม่ตรงกัน ขั้นตอนนี้จะล้มเหลว เนื่องจากคำอธิบายที่ไม่ซ้ำกันนั้นเป็นแบบไบนารี ไม่ใช่การจับคู่แบบพยายามอย่างเต็มที่
| แง่มุม | คุณสมบัติที่จำเป็น | คุณสมบัติช่วยเหลือ |
|---|---|---|
| เมื่อเก็บรักษา | เสมอ สำหรับวัตถุทุกชิ้นในคลาสนั้น | เฉพาะในกรณีที่คุณสมบัติที่จำเป็นไม่สามารถสร้างคำอธิบายที่ไม่ซ้ำกันได้ |
| กำหนดค่าใน | กล่องโต้ตอบการระบุวัตถุ รายการที่ต้องกรอก | กล่องโต้ตอบการระบุวัตถุ รายการช่วยเหลือ |
| ลำดับการใช้งาน | เรียนรู้ก่อนโดยไม่มีเงื่อนไข | เพิ่มทีละรายการจนกว่าจะได้วัตถุที่ไม่ซ้ำกัน |
| การบำบัดระหว่างการทำงาน | เมื่อเปรียบเทียบแล้วจะได้คุณสมบัติที่เหมือนกันกับคุณสมบัติช่วยเหลือ | เมื่อเปรียบเทียบกับคุณสมบัติบังคับแล้ว ถือว่าเหมือนกัน |
วิดีโอด้านล่างนี้จะอธิบายขั้นตอนการทำงานแบบบังคับและแบบช่วยเหลืออย่างละเอียดตั้งแต่ต้นจนจบ
กล่องโต้ตอบการระบุวัตถุ Box และ Object Spy
หน้าต่างการระบุวัตถุไม่ได้เป็นเพียงแค่หน้าต่างแสดงผลเท่านั้น แต่ยังเป็นที่ที่ผู้ทดสอบสามารถปรับแต่งระดับความเข้มข้นของการระบุวัตถุได้อีกด้วย UFT ระบุวัตถุสำหรับสภาพแวดล้อมทั้งหมด การจัดลำดับใหม่ การเพิ่ม หรือการลบคุณสมบัติในที่นี้ จะเปลี่ยนแปลงสิ่งที่ถูกเรียนรู้สำหรับทุกวัตถุในคลาสนั้นนับจากนั้นเป็นต้นไป ไม่ใช่แค่เฉพาะวัตถุที่กำลังบันทึกอยู่เท่านั้น ขั้นตอนการทำงานโดยทั่วไปมีลักษณะดังนี้:
- จุดเปิด UFT และไปที่ เครื่องมือ > การระบุวัตถุ.
- เลือกสภาพแวดล้อม (เว็บ, Windows, Java(และอื่นๆ) จากเมนูแบบดรอปดาวน์
- เลือกคลาสของวัตถุ เช่น WebButton หรือ WinEdit จากรายการทางด้านซ้าย
- ย้ายคุณสมบัติระหว่างรายการบังคับและรายการช่วยเหลือ หรือจัดลำดับรายการช่วยเหลือใหม่เพื่อควบคุมว่าคุณสมบัติใดจะถูกนำไปใช้ UFT ลองก่อน.
- เปิดใช้งานหรือปิดใช้งานการระบุตัวตนอัจฉริยะสำหรับคลาสนั้นโดยใช้ช่องทำเครื่องหมายที่ด้านบนของแผงควบคุม
การเปลี่ยนแปลงที่ทำไว้ที่นี่จะมีผลในครั้งต่อไป UFT เรียนรู้เกี่ยวกับวัตถุของคลาสนั้น — รายการที่บันทึกไว้แล้วในคลังวัตถุจะยังคงคำอธิบายเดิมไว้ จนกว่าจะมีการบันทึกวัตถุใหม่หรืออัปเดตด้วยตนเอง
การใช้ Object Spy เพื่อตรวจสอบคุณสมบัติ
ก่อนที่จะแก้ไขรายการที่จำเป็นหรือรายการช่วยเหลือ ผู้ทดสอบส่วนใหญ่จะตรวจสอบว่าคุณสมบัติของวัตถุนั้นมีลักษณะอย่างไรเสียก่อน สายลับวัตถุการชี้เคอร์เซอร์ของเครื่องมือสอดแนมไปยังส่วนควบคุมใดๆ ในแอปพลิเคชันที่กำลังทดสอบ จะแสดงทั้งคุณสมบัติของวัตถุที่ใช้ทดสอบและคุณสมบัติขณะทำงานควบคู่ไปกับเมธอดต่างๆ UFT สามารถเรียกใช้ได้ — มีประโยชน์เมื่อคุณสมบัติที่จำเป็นมีการเปลี่ยนแปลงระหว่างการก่อสร้างแต่ละครั้ง และจำเป็นต้องเปลี่ยนเป็นคุณสมบัติที่คงที่กว่า
ตัวระบุลำดับ: ดัชนี สถานที่ และเวลาสร้าง
บางครั้ง แม้จะมีคุณสมบัติที่จำเป็นและช่วยอำนวยความสะดวกครบถ้วนแล้ว ก็ยังอาจทำให้วัตถุสองชิ้นขึ้นไปดูเหมือนกันอยู่ดี เช่น ช่องทำเครื่องหมายสามช่องที่มีชื่อ คลาส และป้ายกำกับเดียวกัน เป็นต้น สำหรับสถานการณ์เช่นนี้ UFT ถอยกลับไปใช้ ตัวระบุลำดับค่าสำรองที่จัดอันดับวัตถุที่เหมือนกันทุกประการโดยพิจารณาจากตำแหน่งแทนที่จะเป็นคุณสมบัติ
| ตัวระบุลำดับ | อสังหาริมทรัพย์ | มอบหมายคำสั่งซื้อ | นำไปใช้กับ |
|---|---|---|---|
| ดัชนี | ดัชนี | ลำดับการปรากฏของวัตถุในซอร์สโค้ด โดยเริ่มจาก 0 | คลาสวัตถุใดๆ |
| สถานที่ | สถานที่ | เรียงลำดับจากบนลงล่าง แล้วจากซ้ายไปขวาบนหน้าจอ โดยเริ่มจาก 0 | คลาสวัตถุใดๆ |
| เวลาสร้าง | การสร้างเวลา | ลำดับการเปิดหน้าต่างเบราว์เซอร์ เริ่มต้นที่ 0 | วัตถุเบราว์เซอร์เท่านั้น |
UFT จะเรียนรู้ตัวระบุลำดับก็ต่อเมื่อคุณสมบัติที่จำเป็นและคุณสมบัติเสริมไม่สามารถแยกวัตถุสองชิ้นออกจากกันได้อย่างแท้จริง เนื่องจากค่าเป็นค่าสัมพัทธ์และสามารถเปลี่ยนแปลงได้หากเค้าโครงหน้าเว็บเปลี่ยนไป แม้ว่าตัววัตถุเองจะไม่ได้เปลี่ยนแปลงก็ตาม โค้ด VBScript ด้านล่างใช้ Index เพื่อคลิกลิงก์ที่สองจากสองลิงก์ที่มีชื่อเดียวกัน
Dim objBrowser, objPage Set objBrowser = Browser("title:=Guru99 Bank") Set objPage = objBrowser.Page("title:=Guru99 Bank") ' Index:=1 clicks the second Link named "Manage Order" (index starts at 0) objPage.Link("name:=Manage Order", "index:=1").Click
ค่าดัชนีและตำแหน่งนั้นเฉพาะเจาะจงกับคลาสของวัตถุที่ระบุไว้ในคำสั่ง ดังนั้น ดัชนี:=3 การค้นหาใน WebEdit จะค้นหาเฉพาะในอ็อบเจ็กต์ WebEdit เท่านั้น ในขณะที่ค่าเดียวกันใน WebElement ทั่วไปจะนับรวมในทุกอ็อบเจ็กต์เว็บในหน้าเว็บโดยไม่คำนึงถึงประเภท
ระบบระบุตัวตนอัจฉริยะเหมาะสมกับสถานการณ์ใดบ้าง
การระบุวัตถุใน UFT ไม่หยุดอยู่แค่คำอธิบายที่ได้เรียนรู้มาเท่านั้น เมื่อไม่พบการจับคู่ที่เฉพาะเจาะจง UFT กระบวนการนี้ทำงานตามลำดับที่กำหนดไว้ โดยเริ่มจากการตรวจสอบคุณสมบัติที่จำเป็นและคุณสมบัติช่วยเหลือที่ได้เรียนรู้มาก่อน จากนั้นจึงตรวจสอบตัวระบุความสัมพันธ์ทางภาพ แล้วจึงตรวจสอบคุณสมบัติอื่นๆ ต่อไป การระบุตัวตนอัจฉริยะ หากกลไกนั้นถูกเปิดใช้งานสำหรับคลาส และใช้ตัวระบุลำดับเป็นทางเลือกสุดท้ายเท่านั้น
การระบุตัวตนอัจฉริยะ (Smart Identification) อยู่ระหว่างคำอธิบายที่เรียนรู้มาและตัวระบุลำดับอย่างจงใจ มันสร้างรายการผู้สมัครขึ้นใหม่โดยใช้คุณสมบัติหลักของคลาสและจำกัดให้แคบลงด้วยคุณสมบัติเสริม ดังนั้นจึงมักสามารถกู้คืนวัตถุที่มีคำอธิบายที่เรียนรู้มาผิดพลาดได้ เช่น ปุ่มที่เปลี่ยนชื่อ โดยไม่ต้องแตะต้องคลังเก็บวัตถุ (Object Repository) เลย เนื่องจากขั้นตอนการค้นหาเพิ่มเติมนี้ใช้เวลา ทีมส่วนใหญ่จึงเปิดใช้งานสำหรับคลาสที่การระบุตัวตนมีความเปราะบาง และใช้ตัวระบุลำดับเฉพาะในกรณีที่ตำแหน่งเป็นตัวแยกแยะเพียงอย่างเดียวที่เหลืออยู่ เช่น กลุ่มปุ่มวิทยุที่ไม่มีป้ายกำกับ



