GetRoProperty, GetToProperty ใน QTP/UFT พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
Object Spy จะแสดงคุณสมบัติและเมธอดของคอนโทรลใดๆ ในแอปพลิเคชันที่กำลังทดสอบ ในขณะที่ GetROProperty, GetTOProperty และ SetTOProperty จะอ่านและเขียนค่าคุณสมบัติเหล่านั้นจากคอนโทรล QTP or UFT สคริปต์เดียวที่ทำงานในขณะรันไทม์

บทช่วยสอนนี้สาธิต สายลับวัตถุ.
Object Spy สามารถช่วยกำหนดคุณสมบัติและวิธีการที่เป็นประโยชน์ที่เกี่ยวข้องกับวัตถุในสภาพแวดล้อมของคุณได้
HP/ไมโครโฟกัส UFT บทเรียน ยังอธิบาย GetROProperty, GetTOProperty และ SetTOProperty.
⚠️ หมายเหตุเกี่ยวกับเวอร์ชัน: เครื่องมือที่กล่าวถึงในที่นี้ เดิมวางจำหน่ายในชื่อ HP QuickTest Professional ต่อมาเปลี่ยนชื่อเป็น Micro Focus Unified Functional Testing และปัจจุบันวางจำหน่ายในชื่อเดิม OpenText การทดสอบการทำงาน (UFT หนึ่ง)Object Spy และทั้งสามวิธีนั้นยังคงใช้งานได้ตามปกติเหมือนที่อธิบายไว้ด้านล่าง
คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้
สายลับวัตถุ
- Object Spy เป็นฟีเจอร์หนึ่งใน QTP ซึ่งคุณสามารถดูคุณสมบัติและเมธอดของอ็อบเจ็กต์ทั้งในระหว่างการทดสอบและขณะทำงานได้
- นอกจากนี้ยังให้ไวยากรณ์สำหรับวิธีที่เลือกด้วย
- Object Spy จะแสดงลำดับชั้นที่สมบูรณ์ของวัตถุที่คุณเลือก
ลำดับชั้นนั้นมีความสำคัญ เพราะชื่อคุณสมบัติที่คัดลอกมาจาก Object Spy นั้นเป็นสตริงที่เมธอดทั้งสามด้านล่างคาดหวังไว้ การใช้ Spy กับวัตถุจึงเป็นขั้นตอนแรกในงานดึงข้อมูลคุณสมบัติเกือบทุกอย่าง
GetROProperty
- GetROProperty – เป็นเมธอดในตัวที่ใช้ในการดึงค่าขณะรันไทม์ของคุณสมบัติของอ็อบเจ็กต์
การใช้งาน GetROProperty ประกอบด้วย 4 ขั้นตอน:
- บันทึกข้อมูลอ็อบเจ็กต์ที่คุณต้องการใช้ฟังก์ชัน GetROProperty ลงในช่องข้อมูล ที่เก็บอ็อบเจ็กต์.
- สำหรับวัตถุที่บันทึกไว้ จะระบุคุณสมบัติขณะทำงานที่สามารถนำมาใช้ได้ คุณอาจใช้ Object Spy
- ใช้เมธอด GetROProperty เพื่อดึงค่าคุณสมบัติ Run-time ที่ระบุ และเก็บค่าไว้ในตัวแปร
- ใช้ค่านี้สำหรับการหักลดหย่อนเพิ่มเติม
เนื่องจากค่าถูกอ่านจากตัวควบคุมแบบเรียลไทม์ แอปพลิเคชันจึงต้องเปิดอยู่ และวัตถุนั้นต้องมีอยู่บนหน้าจอจริง ๆ ในขณะที่บรรทัดนั้นทำงาน
SetTOProperty & GetTOProperty
- ลองพิจารณาปุ่มเว็บที่จัดเก็บไว้ใน Object Repository
- เมื่อทำการทดสอบ QTP สร้างสำเนาของวัตถุนี้ชื่อ Test Object และเปรียบเทียบกับ Run Time Object
- คุณสามารถใช้ GetTOProperty เพื่อดึงค่าของคุณสมบัติของอ็อบเจ็กต์ทดสอบได้
- การใช้ SetTOProperty ช่วยให้คุณสามารถเปลี่ยนค่าคุณสมบัติของอ็อบเจ็กต์ทดสอบได้
- เมื่อการทดสอบเสร็จสิ้น วัตถุทดสอบนี้จะถูกทิ้ง และการแก้ไขใดๆ ที่คุณทำในคุณสมบัติของวัตถุโดยใช้ SetTOProperty ก็จะถูกลบไปด้วย
- เมื่อรันการทดสอบอีกครั้ง สำเนาใหม่ของออบเจ็กต์ทดสอบจะถูกสร้างขึ้นโดยมีค่าคุณสมบัติดั้งเดิมที่จัดเก็บไว้ในที่เก็บออบเจ็กต์
- คุณอาจพิจารณาใช้ GetTOProperty และ SetTOProperty เมื่อสคริปต์ทดสอบของคุณมีโค้ดหลายบรรทัดและสภาพแวดล้อมของคุณไม่คงที่
- หมายเหตุ ไม่มีฟังก์ชัน SetROProperty
ไวยากรณ์และตัวอย่าง
ทั้งสามวิธีนี้จะถูกเรียกใช้กับอ็อบเจ็กต์ทดสอบที่อยู่ท้ายสุดของลำดับชั้น และทั้งสามวิธีรับชื่อคุณสมบัติคำอธิบายเป็นสตริง ตารางแสดงรูปแบบการเรียกใช้ของแต่ละวิธี
| วิธี | วากยสัมพันธ์ | อ่านหรือเขียน |
|---|---|---|
| GetROProperty | object.GetROProperty(Property) | อ่านค่าการควบคุมแบบเรียลไทม์ในแอปพลิเคชัน |
| GetTOProperty | object.GetTOProperty(Property) | อ่านคำอธิบายวัตถุทดสอบที่จัดเก็บไว้ |
| ตั้งค่าคุณสมบัติ | object.SetTOProperty คุณสมบัติ, ค่า | เขียนคำอธิบายวัตถุทดสอบสำหรับการทำงานครั้งนี้เท่านั้น |
การอ่านค่าขณะรันไทม์นั้นใช้คำสั่งเพียงคำสั่งเดียว ตัวอย่างนี้มาจาก... เอกสารอ้างอิงอย่างเป็นทางการสำหรับการเรียกและตั้งค่าดึงที่อยู่เป้าหมายของลิงก์ระหว่างเซสชันการทำงาน
link_href = Browser("Technologies").Page("Technologies").Link("Jobs").GetROProperty("href")
การเขียนและอ่านค่าคุณสมบัติของวัตถุทดสอบนั้นใช้เวลาสั้นมาก ตัวอย่างด้านล่างกำหนดชื่อปุ่ม Submit ให้เป็นชื่อปุ่มของฉัน และอ่านค่าเดียวกันกลับมาได้ทันที
Browser("QA Home Page").Page("QA Home Page").WebButton("Submit").SetTOProperty "Name", "my button" ButtonName = Browser("QA Home Page").Page("QA Home Page").WebButton("Submit").GetTOProperty("Name")
โดยทั่วไป การตรวจสอบจะผสานสองแนวคิดนี้เข้าด้วยกัน: อ่านค่าขณะทำงานด้วย GetROProperty จากนั้นเปรียบเทียบกับสิ่งที่การทดสอบคาดหวัง
strValue = Browser("Welcome").Page("Find a Flight").WebList("fromPort").GetROProperty("selection") If strValue = "Acapulco" Then Reporter.ReportEvent micPass, "Default city", "Default city is correct" Else Reporter.ReportEvent micFail, "Default city", "Unexpected value: " & strValue End If
ความแตกต่างระหว่าง GetROProperty และ GetTOProperty
ชื่อทั้งสองแตกต่างกันเพียงตัวอักษรเดียว และเป็นคู่ชื่อที่ทำให้เกิดความสับสนมากที่สุดในเครื่องมือนี้ RO ย่อมาจาก run-time object (วัตถุขณะทำงาน) และ TO ย่อมาจาก test object (วัตถุทดสอบ) โดยแต่ละชื่อจะอ่านข้อมูลจากตำแหน่งที่แตกต่างกัน
| จุดเปรียบเทียบ | GetROProperty | GetTOProperty |
|---|---|---|
| แหล่งที่มาของมูลค่า | การควบคุมแบบเรียลไทม์ในแอปพลิเคชันที่กำลังทำงานอยู่ | คำอธิบายที่จัดเก็บไว้สำหรับวัตถุทดสอบ |
| แอปพลิเคชันต้องเปิดอยู่ | มี (ใบกำกับภาษีเต็มรูปแบบ) | ไม่ |
| เห็นการเปลี่ยนแปลง SetTOProperty | ไม่ | ใช่ สำหรับรอบปัจจุบันนี้ |
| การใช้งานทั่วไป | ตรวจสอบว่าผู้ใช้เห็นอะไรจริง ๆ | ตรวจสอบหรือแก้ไขข้อผิดพลาดเกี่ยวกับวิธีการระบุวัตถุ |
| ตัวเซ็ตจับคู่ | ไม่มี — ไม่มี SetROProperty | ตั้งค่าคุณสมบัติ |
การเปรียบเทียบอย่างละเอียดทำให้เห็นความแตกต่างได้อย่างชัดเจน ลองกำหนด id ใน HTML ให้กับลิสต์ที่ไม่มี id อยู่ แล้วอ่านค่ากลับมาทั้งสองวิธี: GetROProperty จะคืนค่าเป็นสตริงว่าง เพราะแอปพลิเคชันไม่เคยเปลี่ยนแปลง ในขณะที่ GetTOProperty จะคืนค่าที่เพิ่งเขียนลงในคำอธิบาย
ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
การดึงข้อมูลคุณสมบัติล้มเหลวด้วยเหตุผลที่คาดเดาได้จำนวนเล็กน้อย ตารางนี้แสดงรายการเหตุผลที่ผู้ทดสอบพบเจอบ่อยที่สุด
| อาการ | ก่อให้เกิด | แก้ไขปัญหา |
|---|---|---|
| การเรียกฟังก์ชันนี้จะส่งคืนสตริงว่าง | ชื่อคุณสมบัติไม่ถูกต้อง หรือวัตถุนั้นไม่ได้เปิดเผยคุณสมบัติดังกล่าว | ตรวจสอบวัตถุอีกครั้งและคัดลอกชื่อคุณสมบัติให้ตรงตามที่แสดงไว้ทุกประการ |
| ไม่พบวัตถุที่บรรทัด GetROProperty | การควบคุมยังไม่แสดงผล | เพิ่มขั้นตอนการซิงโครไนซ์ก่อนการอ่าน |
| GetROProperty ไม่สนใจการเปลี่ยนแปลง SetTOProperty | วิธีการทั้งสองแบบนี้ออกแบบมาเพื่อใช้กับวัตถุที่แตกต่างกัน | อ่านค่าการเปลี่ยนแปลงกลับมาโดยใช้ GetTOProperty แทน |
| การเปลี่ยนแปลง SetTOProperty จะหายไป | การแก้ไขวัตถุทดสอบจะมีผลเฉพาะในการทำงานครั้งปัจจุบันเท่านั้น | แก้ไขวัตถุในที่เก็บข้อมูล หรือใช้ การเขียนโปรแกรมเชิงพรรณนา |
| คำสั่ง SetROProperty ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ | ไม่มีวิธีการดังกล่าวอยู่จริง | ใช้งานแอปพลิเคชันผ่านขั้นตอนปกติ เช่น การตั้งค่า หรือการคลิก |
มีสองนิสัยที่ช่วยป้องกันปัญหาเหล่านี้ได้ส่วนใหญ่: ตรวจสอบตัวควบคุมก่อนเขียนบรรทัดแทนที่จะเดาชื่อคุณสมบัติ และเก็บรักษา วีบีสคริปต์ การเรียกข้อมูลจะเกิดขึ้นใกล้กับขั้นตอนที่ต้องการค่า ดังนั้นวัตถุจึงยังคงปรากฏอยู่บนหน้าจอเมื่อมีการอ่านค่าเกิดขึ้น
