ตัวระบุลำดับใน QTP/UFTตัวอย่างการระบุวัตถุ
⚡ สรุปอย่างชาญฉลาด
ตัวระบุลำดับใน QTP/UFT เป็นตัวตัดสินในกรณีที่คะแนนเสมอกัน UFT ใช้ได้เมื่อคุณสมบัติที่จำเป็นและคุณสมบัติเสริมยังคงตรงกับวัตถุมากกว่าหนึ่งรายการ โดยใช้ค่าดัชนี ตำแหน่ง หรือเวลาสร้าง เพื่อเลือกวัตถุที่ไม่ซ้ำกันเพียงรายการเดียว
ตัวระบุลำดับ (Ordinal Identifier) คืออะไร QTP/UFT?
An ตัวระบุลำดับ เป็นคุณสมบัติเชิงตัวเลขที่ UFT (เดิม QTPฟังก์ชันนี้จะเพิ่มข้อมูลลงในคำอธิบายของวัตถุ เมื่อคุณสมบัติที่จำเป็นและคุณสมบัติเสริมที่บันทึกไว้ระหว่างเซสชันการบันทึกไม่เพียงพอที่จะระบุวัตถุได้อย่างเฉพาะเจาะจง แทนที่จะล้มเหลว เครื่องมือจะใช้ตัวนับแทน ซึ่งในทางปฏิบัติแล้วจะบอกว่า "ให้เลือกวัตถุชิ้นที่สามของคลาสนี้"
โดยค่าเริ่มต้น ตัวระบุลำดับจะมีอยู่สำหรับคลาสวัตถุทดสอบทุกคลาส WebEdit จะมีหมายเลขแตกต่างจาก WinButton และ Browser ก็จะมีหมายเลขแตกต่างออกไปอีก คุณสามารถดูหรือแก้ไขตัวระบุลำดับเริ่มต้นสำหรับคลาสได้ในหน้าต่างการระบุวัตถุ
ดังที่ภาพหน้าจอข้างต้นแสดงให้เห็น เมนูแบบเลื่อนลงสำหรับระบุลำดับจะอยู่ด้านล่างสุดของกล่องโต้ตอบการระบุวัตถุ ใต้รายการคุณสมบัติที่จำเป็นและคุณสมบัติช่วยเหลือ ตำแหน่งนั้นไม่ใช่เรื่องบังเอิญ: มันสะท้อนลำดับที่ UFT ที่จริงแล้วมีการปรึกษาหารือกับทั้งสามกลุ่ม
มีตัวระบุลำดับสามประเภทใน UFT:
- อิงตามดัชนี
- ตามสถานที่
- เวลาสร้าง
ทำไม UFT ใช้ตัวระบุลำดับเฉพาะในกรณีที่เป็นทางเลือกสุดท้ายเท่านั้น
การระบุวัตถุใน UFT กระบวนการทำงานเป็นแบบเรียงลำดับขั้น โดยจะเรียนรู้คุณสมบัติที่จำเป็นก่อน หากไม่พบการจับคู่ใดๆ ก็จะเพิ่มคุณสมบัติเสริมทีละรายการจนกว่าคำอธิบายจะไม่ซ้ำกัน จนกว่าจะใช้คุณสมบัติทั้งสองกลุ่มจนหมดแล้วจึงจะเริ่มกระบวนการ UFT แนบตัวระบุลำดับ และในระหว่างการทำงาน ระบบจะตรวจสอบกลไกการระบุตัวตนอัจฉริยะก่อนที่จะเชื่อถือค่าลำดับนั้น
เหตุผลที่ทำให้ได้อันดับนั้นคือความเสถียร คุณสมบัติที่จำเป็นและคุณสมบัติที่ช่วยเสริมนั้นอธิบายถึง... อะไร วัตถุประกอบด้วย: ชื่อ แท็ก HTML ประเภท และป้ายกำกับ ตัวระบุลำดับอธิบายเพียงเท่านั้น ที่ไหน วัตถุนั้นวางอยู่ตรงนั้นพอดีในขณะที่ทำการบันทึก สิ่งใดก็ตามที่เปลี่ยนหน้ากระดาษ จะทำให้หมายเลขเปลี่ยนไปด้วย:
- นักพัฒนาแทรกฟิลด์ที่ซ่อนไว้เหนือฟิลด์ที่คุณตั้งค่าให้เป็นอัตโนมัติ
- แบนเนอร์โปรโมชั่นจะเพิ่มลิงก์พิเศษสองลิงก์ลงในส่วนหัว
- การจัดวางแบบ Responsive จะปรับรูปแบบฟอร์มจากสองคอลัมน์ให้เหลือคอลัมน์เดียว
- หน้าต่างเบราว์เซอร์แบบป๊อปอัพเปิดขึ้นเร็วกว่าที่บันทึกไว้
การเปลี่ยนแปลงเหล่านี้ไม่ได้ทำให้คำอธิบายที่สร้างขึ้นจากชื่อหรือรหัสเสียหาย แต่การเปลี่ยนแปลงแต่ละครั้งจะเปลี่ยนแปลงค่าดัชนีและตำแหน่งทั้งหมดในหน้าเว็บโดยไม่แจ้งให้ทราบล่วงหน้า นี่คือเหตุผลที่วิศวกรผู้มีประสบการณ์มองว่าตัวระบุลำดับเป็นสัญญาณว่าคำอธิบายของวัตถุนั้นต้องการการปรับปรุง ไม่ใช่เป็นวิธีแก้ปัญหาที่เสร็จสมบูรณ์แล้ว หลักการเดียวกันนี้ใช้ได้กับทุกเรื่อง การทดสอบอัตโนมัติ กรอบการทำงานโดยทั่วไป รวมถึงกลยุทธ์การระบุตำแหน่งด้วย Selenium.
💡 เคล็ดลับ: ก่อนที่จะยอมรับตัวระบุลำดับ ให้เปิดวัตถุใน Object Spy และมองหาแอตทริบิวต์แบบกำหนดเองที่เสถียร การเพิ่มแอตทริบิวต์นั้นลงในรายการคุณสมบัติช่วยเหลือสำหรับคลาส มักจะช่วยลดความจำเป็นในการใช้ตัวระบุลำดับในทุกวัตถุประเภทนั้นในอนาคต
ประเภทของตัวระบุลำดับใน UFT/QTP
ตามดัชนี
- เมื่อใช้ตัวระบุลำดับตามดัชนี UFT กำหนดค่าให้กับ ดัชนี คุณสมบัติของวัตถุในระหว่างการบันทึก
- ค่าดังกล่าวอิงตามลำดับที่วัตถุปรากฏในซอร์สโค้ด ไม่ใช่ที่ปรากฏบนหน้าจอ
- ค่าที่ปรากฏครั้งแรกคือ 0
- ค่าของคุณสมบัติดัชนีนั้นเฉพาะเจาะจงสำหรับแต่ละวัตถุ ดังนั้นแต่ละคลาสของวัตถุทดสอบจึงถูกนับแยกกัน
- ดังนั้น หากคุณใช้ index:=3 เพื่ออธิบายวัตถุทดสอบ WebEdit UFT ค้นหาวัตถุ WebEdit ตัวที่สี่บนหน้าเว็บ
- ในทำนองเดียวกัน หากคุณใช้ index:=1 เพื่ออธิบายวัตถุทดสอบ WebButton UFT ค้นหาอ็อบเจ็กต์ WebButton ตัวที่สองบนหน้าเว็บ
ตามสถานที่
- เมื่อมีการใช้ตัวระบุลำดับตามตำแหน่งที่ตั้ง UFT กำหนดค่าให้กับ ที่ตั้ง คุณสมบัติของวัตถุที่ใช้ระบุตัวตนได้อย่างเฉพาะเจาะจง
- ค่าจะขึ้นอยู่กับลำดับที่วัตถุปรากฏขึ้นภายในหน้าต่าง เฟรม หรือกล่องโต้ตอบ เมื่อเทียบกับวัตถุอื่นที่มีคุณสมบัติเหมือนกัน
- การเกิดขึ้นครั้งแรกของวัตถุคือ 0
- ค่าต่างๆ จะถูกกำหนดในคอลัมน์ โดยเรียงจากบนลงล่าง แล้วจึงเรียงจากซ้ายไปขวา
- ตำแหน่งเป็นตัวระบุลำดับเริ่มต้นสำหรับมาตรฐานส่วนใหญ่ Windows คลาสทดสอบวัตถุ ซึ่งการจัดวางภาพมีความเสถียรมากกว่าลำดับของมาร์กอัป
เวลาสร้าง
- เมื่อใช้ตัวระบุลำดับเวลาการสร้าง UFT กำหนดค่าให้กับ เวลาสร้าง คุณสมบัติของวัตถุเบราว์เซอร์
- ตัวระบุนี้ใช้ได้เฉพาะในสภาพแวดล้อมเว็บและเฉพาะกับวัตถุทดสอบเบราว์เซอร์เท่านั้น
- ค่านี้บ่งบอกถึงลำดับการเปิดเบราว์เซอร์เมื่อเทียบกับเบราว์เซอร์อื่นๆ ที่เปิดอยู่
- เบราว์เซอร์แรกที่เปิดระหว่างการทำงานจะได้รับค่า creationtime:=0 และเบราว์เซอร์ถัดไปจะได้รับค่า 1, 2, 3 และต่อไปเรื่อยๆ
- หากปิดเบราว์เซอร์ใดเบราว์เซอร์หนึ่ง เบราว์เซอร์ที่เหลือจะยังคงใช้ค่าเดิมแทนที่จะเปลี่ยนหมายเลขใหม่
ตารางเปรียบเทียบ ดัชนี ตำแหน่งที่ตั้ง และเวลาสร้าง:
ตัวระบุทั้งสามตัวตอบคำถามที่แตกต่างกันสามข้อ และการเลือกตัวระบุที่ไม่ถูกต้องมักเป็นสาเหตุของความล้มเหลวเป็นระยะๆ
| แง่มุม | ดัชนี | สถานที่ | การสร้างเวลา |
|---|---|---|---|
| ชื่อทรัพย์สิน | ดัชนี | ที่ตั้ง | เวลาสร้าง |
| หลักเกณฑ์การสั่งซื้อ | ลำดับในซอร์สโค้ด / ลำดับชั้นของอ็อบเจ็กต์ | ตำแหน่งหน้าจอภายในหน้าต่าง กรอบ หรือกล่องโต้ตอบ | ลำดับการเปิดโปรแกรมเบราว์เซอร์ |
| กฎการนับ | ตามลำดับ ต่อคลาสวัตถุทดสอบ | เรียงเป็นคอลัมน์ จากบนลงล่าง แล้วจากซ้ายไปขวา | ตามลำดับ ต่ออินสแตนซ์ของเบราว์เซอร์ |
| ค่าแรก | 0 | 0 | 0 |
| นำไปใช้กับ | เว็บไซต์และ Windows ชั้นเรียน | ส่วนใหญ่เป็นแบบมาตรฐาน Windows ชั้นเรียน | วัตถุเบราว์เซอร์เท่านั้น |
| หยุดพักเมื่อ | การเปลี่ยนแปลงลำดับการทำเครื่องหมาย | เค้าโครงถูกจัดวางใหม่หรือปรับขนาดใหม่ | Windows เปิดในลำดับที่แตกต่างกัน |
| ใช้ดีที่สุดสำหรับ | การควบคุมแบบตารางหรือกริดซ้ำ | แบบฟอร์มเดสก์ท็อปแบบดั้งเดิมที่มีเค้าโครงคงที่ | การใช้งานเว็บแอปพลิเคชันแบบหลายหน้าต่าง เช่น หน้าต่างป๊อปอัพสำหรับการชำระเงิน |
วิธีการตั้งค่าตัวระบุลำดับในคลังวัตถุ
ตัวระบุลำดับจะถูกกำหนดค่าสำหรับแต่ละคลาสของวัตถุทดสอบ และจะถูกนำไปใช้โดยอัตโนมัติกับทุกวัตถุของคลาสนั้น UFT เรียนรู้ในภายหลัง วัตถุที่มีอยู่แล้วในที่เก็บข้อมูลจะไม่ได้รับการอัปเดตย้อนหลัง
- จุดเปิด UFT และเลือก เครื่องมือ > การระบุวัตถุ.
- เลือกสภาพแวดล้อม เช่น เว็บ หรือ มาตรฐาน Windowsจากเมนูแบบเลื่อนลง "สภาพแวดล้อม"
- เลือกคลาสของวัตถุทดสอบที่คุณต้องการเปลี่ยนแปลง เช่น WebEdit หรือ WinButton
- ตัว Vortex Indicator ได้ถูกนำเสนอลงในนิตยสาร ตัวระบุลำดับ ในส่วนนี้ ให้เลือก Index, Location, CreationTime หรือ None
- คลิก OK และเรียนรู้เกี่ยวกับวัตถุนั้นใหม่ เพื่อให้สามารถบันทึกค่าลำดับใหม่ได้
- เปิดคลังเก็บวัตถุ เลือกวัตถุ และตรวจสอบว่าคุณสมบัติลำดับปรากฏในรายการคำอธิบายแล้ว
การเลือก ไม่มี ปิดใช้งานฟังก์ชันสำรองสำหรับคลาสนั้นโดยสิ้นเชิง UFT จากนั้นระบบจะแจ้งข้อผิดพลาดในการระบุตัวตนแทนที่จะเป็นการคาดเดา ซึ่งมักจะเป็นพฤติกรรมที่คุณต้องการในชุดทดสอบที่การระบุตัวตนผิดพลาดโดยไม่แจ้งให้ทราบนั้นสร้างความเสียหายมากกว่าความล้มเหลวที่ชัดเจน การบันทึกความคาดหวังของคุณไว้ในเอกสารที่เขียนอย่างดี กรณีทดสอบ ทำให้ข้อแลกเปลี่ยนนั้นชัดเจนสำหรับทั้งทีม
⚠️คำเตือน: การเปลี่ยนตัวระบุลำดับสำหรับคลาสเป็นการตั้งค่าระดับเครื่อง ไม่ใช่ระดับการทดสอบ หากไม่ได้ส่งออกและแชร์ การตั้งค่านี้อาจใช้งานได้ดีบนเครื่องของคุณ แต่อาจล้มเหลวบนเครื่องของเพื่อนร่วมงานหรือบนเอเจนต์การสร้างได้
วิธีการใช้ตัวระบุลำดับใน Descriptฉันเขียนโปรแกรม
ในการเขียนโปรแกรมเชิงพรรณนา จะไม่มีกล่องโต้ตอบสำหรับการระบุวัตถุ ลำดับจะถูกเขียนลงในสตริงคำอธิบายโดยตรง เช่นเดียวกับชื่อคุณสมบัติอื่นๆ และจะเริ่มต้นที่ศูนย์เสมอ
' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank") objPage.WebEdit("index:=3").Set "9999999999" Print "Filled WebEdit occurrence #" & (3 + 1) ' Location is counted top to bottom, then left to right objPage.WebButton("location:=1").Click Print "Clicked WebButton occurrence #" & (1 + 1) ' CreationTime works only on Browser objects Print "Switching to browser opened at position #" & (1 + 1) Browser("creationtime:=1").Sync
Output:
Filled WebEdit occurrence #4 Clicked WebButton occurrence #2 Switching to browser opened at position #2
รูปแบบที่ปลอดภัยกว่าคือการรวมอสังหาริมทรัพย์เข้ากับ... ChildObjects ดังนั้นลำดับจึงได้รับการตรวจสอบความถูกต้องก่อนนำไปใช้ ตัวอย่างด้านล่างนี้สมมติว่าหน้าเว็บมีวัตถุ WebEdit ที่ตรงกันห้าชิ้นและมีดัชนีเป็น 9
Dim oDesc, oChildren, intIndex Set oDesc = Description.Create() oDesc("micclass").Value = "WebEdit" oDesc("html tag").Value = "INPUT" Set oChildren = objPage.ChildObjects(oDesc) intIndex = 9 If intIndex < oChildren.Count Then oChildren(intIndex).Set "Guru99" Else Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match" End If
Output:
Index 9 is out of range; only 5 objects match
ตัวป้องกันนี้จะเปลี่ยนข้อผิดพลาดขณะทำงานที่ไม่เป็นประโยชน์อย่าง “ไม่สามารถระบุวัตถุได้” ให้เป็นข้อความที่อ่านง่าย ซึ่งมีความสำคัญเมื่อมีการเผยแพร่ผลลัพธ์ไปยังข้อบกพร่อง tracเคอร์ หรือ ถึง HP ALM ผสานรวมเข้ากับ UFT.
ข้อผิดพลาดทั่วไปในการใช้ตัวระบุลำดับ
ข้อบกพร่องที่เกี่ยวข้องกับลำดับส่วนใหญ่ tracกลับไปสู่ชุดข้อผิดพลาดที่เกิดขึ้นซ้ำๆ เล็กน้อย
- นับจาก 1. ตัวระบุลำดับทุกตัวเริ่มต้นที่ 0 การเขียน index:=1 สำหรับฟิลด์แรกเป็นข้อผิดพลาดที่พบบ่อยที่สุด และทำให้เกิดความล้มเหลวที่ผิดพลาดไปหนึ่งตำแหน่ง ซึ่งดูเหมือนเป็นปัญหาเรื่องจังหวะเวลา
- สับสนระหว่างดัชนีกับตำแหน่งที่ตั้ง ดัชนีจะอ้างอิงตามซอร์สโค้ด ส่วนตำแหน่งจะอ้างอิงตามหน้าจอ ในหน้าเว็บที่ CSS จัดเรียงองค์ประกอบใหม่ ค่าทั้งสองจะแตกต่างกันและสลับกันping พวกมันแอบกำหนดเป้าหมายไปที่การควบคุมที่ไม่ถูกต้อง
- การใช้งาน CreationTime นอกสภาพแวดล้อมเว็บ คุณสมบัตินี้มีอยู่เฉพาะในอ็อบเจ็กต์ Browser เท่านั้น การนำไปใช้กับอ็อบเจ็กต์ Page, Frame หรือ Window จะทำให้เกิดข้อผิดพลาดว่าคุณสมบัตินี้ไม่รองรับ
- การกำหนดค่าลำดับแบบตายตัวลงในฟังก์ชันที่ใช้ร่วมกัน ฟังก์ชันที่นำกลับมาใช้ใหม่ได้ซึ่งกำหนดเงื่อนไขว่า index:=2 จะใช้งานไม่ได้ทันทีที่หน้าจอที่สองซึ่งมีเค้าโครงแตกต่างกันเรียกใช้ฟังก์ชันนั้น
- เก็บค่าลำดับไว้ในที่เก็บข้อมูลหลังจากแอปพลิเคชันเสถียรแล้ว เมื่อนักพัฒนาเพิ่ม ID ที่เสถียรแล้ว ให้กลับไปตรวจสอบอ็อบเจ็กต์เหล่านั้นอีกครั้ง และแทนที่ลำดับด้วยคุณสมบัติใหม่
- อาศัยลำดับภายในวงวนบนตาราง ชอบ
ChildObjectsซึ่งจะส่งคืนคอลเลกชันแบบเรียลไทม์ ดังนั้นจำนวนนับจึงสะท้อนถึงหน้าปัจจุบัน ไม่ใช่จำนวนนับที่บันทึกไว้
แหล่งข้อมูล
ดาวน์โหลดเว็บเพจที่ใช้ในบทเรียนข้างต้นเพื่อฝึกฝนด้วยตนเอง
ตัวระบุลำดับเป็นเพียงส่วนเล็ก ๆ ส่วนหนึ่งของแบบจำลองการระบุวัตถุ หากต้องการดูว่าตัวระบุลำดับเหล่านี้เข้ากับขั้นตอนการทำงานโดยรวมอย่างไร โปรดอ่านต่อในส่วนเต็ม QTP/UFT ชุดฝึกอบรมทบทวนพื้นฐานใน การทดสอบซอฟต์แวร์เรียนรู้วิธีการจัดการผลลัพธ์ใน บทช่วยสอน HP ALMและเปรียบเทียบกลยุทธ์การระบุตำแหน่งกับ Selenium เกี่ยวกับการสอน.
คำถามที่พบบ่อย
คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้


