GetRoProperty, GetToProperty ใน QTP/UFT พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 🔎 Object Spy ตัวแรก: ชี้อุปกรณ์ไปยังตัวควบคุมเพื่อดูคุณสมบัติของวัตถุทดสอบ คุณสมบัติขณะทำงาน เมธอด และลำดับชั้นทั้งหมด
  • ☑️ โลกของวัตถุสองแบบ: วัตถุสำหรับการทดสอบคือคำอธิบายที่จัดเก็บไว้ ส่วนวัตถุที่ใช้งานจริงคือส่วนควบคุมที่ทำงานอยู่ภายในแอปพลิเคชัน
  • ✅ GetROProperty: ฟังก์ชันนี้จะอ่านค่าปัจจุบันจากตัวควบคุมแบบเรียลไทม์ ดังนั้นแอปพลิเคชันจะต้องเปิดอยู่และวัตถุนั้นจะต้องมีอยู่จริง
  • 🧪 GetTOProperty: วิธีการนี้จะอ่านคำอธิบายที่จัดเก็บไว้แทน ซึ่งเป็นเหตุผลว่าทำไมทั้งสองวิธีจึงอาจส่งคืนค่าที่แตกต่างกัน
  • 🛠️ ตั้งค่าคุณสมบัติ: การเปลี่ยนแปลงนี้มีผลเฉพาะกับการทำงานครั้งนี้เท่านั้น โดยจะไม่ส่งผลกระทบต่อที่เก็บข้อมูล และจะถูกยกเลิกเมื่อการทำงานสิ้นสุดลง
  • 📌 ไม่มี SetROProperty: สคริปต์สามารถอ่านข้อมูลจากแอปพลิเคชันได้ แต่ไม่สามารถเขียนค่ากลับเข้าไปในแอปพลิเคชันได้

Object Spy และเมธอด GetROProperty, GetTOProperty และ SetTOProperty ใน QTP และ 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 ขั้นตอน:

  1. บันทึกข้อมูลอ็อบเจ็กต์ที่คุณต้องการใช้ฟังก์ชัน GetROProperty ลงในช่องข้อมูล ที่เก็บอ็อบเจ็กต์.
  2. สำหรับวัตถุที่บันทึกไว้ จะระบุคุณสมบัติขณะทำงานที่สามารถนำมาใช้ได้ คุณอาจใช้ Object Spy
  3. ใช้เมธอด GetROProperty เพื่อดึงค่าคุณสมบัติ Run-time ที่ระบุ และเก็บค่าไว้ในตัวแปร
  4. ใช้ค่านี้สำหรับการหักลดหย่อนเพิ่มเติม

เนื่องจากค่าถูกอ่านจากตัวควบคุมแบบเรียลไทม์ แอปพลิเคชันจึงต้องเปิดอยู่ และวัตถุนั้นต้องมีอยู่บนหน้าจอจริง ๆ ในขณะที่บรรทัดนั้นทำงาน

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 ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ ไม่มีวิธีการดังกล่าวอยู่จริง ใช้งานแอปพลิเคชันผ่านขั้นตอนปกติ เช่น การตั้งค่า หรือการคลิก

มีสองนิสัยที่ช่วยป้องกันปัญหาเหล่านี้ได้ส่วนใหญ่: ตรวจสอบตัวควบคุมก่อนเขียนบรรทัดแทนที่จะเดาชื่อคุณสมบัติ และเก็บรักษา วีบีสคริปต์ การเรียกข้อมูลจะเกิดขึ้นใกล้กับขั้นตอนที่ต้องการค่า ดังนั้นวัตถุจึงยังคงปรากฏอยู่บนหน้าจอเมื่อมีการอ่านค่าเกิดขึ้น

คำถามที่พบบ่อย

Object Spy แสดงรายการคุณสมบัติการระบุตัวตนที่เครื่องมือมีสำหรับคลาสนั้นๆ รวมถึงคุณสมบัติพื้นฐานที่เบราว์เซอร์แสดงออกมา ค่าแอตริบิวต์และสไตล์จะเข้าถึงได้โดยใช้คำนำหน้าแอตริบิวต์และสไตล์ภายในสตริงคุณสมบัติ

อ็อบเจ็กต์ขณะทำงาน (Run-time object) เป็นของแอปพลิเคชัน ไม่ใช่ของชุดทดสอบ ดังนั้นเครื่องมือจะไม่เขียนข้อมูลลงไปในนั้น หากต้องการเปลี่ยนแปลงสิ่งที่แอปพลิเคชันเก็บไว้ ให้ควบคุมด้วยขั้นตอนปกติ เช่น ตั้งค่า (Set), เลือก (Select) หรือคลิก (Click)

ไม่ อ็อบเจ็กต์ทดสอบชั่วคราวจะถูกลบทิ้งเมื่อการทำงานสิ้นสุดลง และจะสร้างสำเนาใหม่จากที่เก็บข้อมูลในครั้งต่อไป การเปลี่ยนแปลงถาวรจะอยู่ในที่เก็บข้อมูลอ็อบเจ็กต์นั้นเอง

ใช่แล้ว อ็อบเจ็กต์ที่อธิบายไว้ซึ่งสร้างขึ้นแบบอินไลน์จะยอมรับการเรียกใช้แบบเดียวกัน ดังนั้น GetROProperty จึงใช้งานได้กับอ็อบเจ็กต์ดังกล่าว การเขียนโปรแกรมเชิงพรรณนา เช่นกัน ฟังก์ชัน GetTOProperty จะส่งคืนค่าจากคำอธิบายแบบอินไลน์ แทนที่จะเป็นค่าจากรายการที่จัดเก็บไว้

เครื่องมือระบุตำแหน่งที่ใช้ AI จะจัดอันดับคุณสมบัติที่เป็นไปได้หลายแห่งสำหรับการควบคุมเดียวกัน และแก้ไขคำอธิบายที่ผิดพลาดเมื่อคุณลักษณะใดคุณลักษณะหนึ่งเปลี่ยนแปลงไป ซึ่งจะช่วยลดขั้นตอนการตรวจสอบด้วยตนเองลง แต่คุณสมบัติที่แนะนำยังคงต้องได้รับการตรวจสอบโดยมนุษย์อยู่ดี

Copilot จะสร้างลำดับชั้นและการเรียกใช้เมธอดให้สมบูรณ์เมื่อพบบรรทัดที่คล้ายกันในไฟล์ มันไม่สามารถทราบชื่อวัตถุจริงของคุณหรือคุณสมบัติที่ตัวควบคุมแสดงออกมาได้ ดังนั้นควรตรวจสอบสตริงที่สร้างขึ้นทุกรายการใน Object Spy

Object Spy เป็นเครื่องมือตรวจสอบที่แสดงค่าต่างๆ ขณะที่คุณกำลังสร้างสคริปต์ Checkpoint คือขั้นตอนที่ทำงานอยู่ภายในชุดทดสอบและรายงานผลว่าผ่านหรือล้มเหลวเมื่อเทียบกับค่าที่คาดหวังที่จัดเก็บไว้

เฉพาะในกรณีที่วัตถุนั้นยังคงมีอยู่ในแอปพลิเคชันเท่านั้น หากคอนโทรลใดไม่แสดงผล หรือถูกลบออกจากหน้าเว็บ จะเกิดข้อผิดพลาด "ไม่พบวัตถุ" แทนที่จะส่งค่าว่างกลับมา

สรุปโพสต์นี้ด้วย: