Descriptการเขียนโปรแกรม ive ใน QTP/UFT: ไดนามิกและคงที่

ความหมายของ Descriptฉันเขียนโปรแกรมเหรอ?

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

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

คลิก Good Farm Animal Welfare Awards หากไม่สามารถเข้าถึงวิดีโอได้

ไฮไลท์วิดีโอ

  • ลบวัตถุ Descriptไอออนของชื่อตัวแทน Win Edit Box จากที่เก็บวัตถุ หากคุณรันการทดสอบอีกครั้ง มันจะล้มเหลวเนื่องจากไม่สามารถจดจำออบเจ็กต์ได้ เรามาตรวจสอบสาเหตุที่สคริปต์ล้มเหลว
  • ระหว่างรันไทม์ Micro Focus UFT จะระบุการดำเนินการที่ดำเนินการบนกล่อง WinEdit และอ็อบเจ็กต์ Description ใน Object Repository จะถูกเก็บไว้เป็นชื่อตัวแทน ซึ่งจะใช้ชื่อนี้เพื่อติดตามวัตถุใน Object Repository สำหรับพาเรนต์ คุณไม่สามารถมีวัตถุย่อยสองชิ้นที่มีชื่อเดียวกันได้ ดังนั้น QTP จึงทำการแมปวัตถุใน Object Repository เฉพาะ จากนั้นจึงใช้คำอธิบายที่เก็บไว้ใน Object Repository และแทนที่ชื่อด้วยคำอธิบาย จากนั้นจึงใช้คำสั่งนี้เพื่อระบุวัตถุในแอปพลิเคชันที่อยู่ระหว่างการทดสอบ
  • เนื่องจากในกรณีของเรา เราได้ลบคำอธิบายอ็อบเจ็กต์นี้ไปแล้ว สคริปต์จึงล้มเหลว
  • แต่จะเกิดอะไรขึ้น แทนที่จะแทนที่ QTP เพื่อแทนที่คำอธิบายออบเจ็กต์ คุณในฐานะผู้ทดสอบจะระบุคำอธิบายออบเจ็กต์ในสคริปต์ของคุณโดยตรง นี่ไม่มีอะไรนอกจาก “Descriptฉันเขียนโปรแกรม”

ประเภทของ Descriptฉันเขียนโปรแกรม

คุณสามารถใช้ได้ Descriptฉันเขียนโปรแกรมได้สองวิธี

  1. คงที่
  2. พลวัต

คงที่ Descriptฉันเขียนโปรแกรม

ในวิธีการแบบคงที่สำหรับการระบุวัตถุ คุณจะระบุคุณสมบัติของวัตถุในรูปแบบต่อไปนี้

property:=values,

รูปแบบนี้เรียกว่าคู่ค่าคุณสมบัติ และอยู่ในเครื่องหมายจุลภาคคว่ำ

หากวัตถุของคุณใช้ คำอธิบายหลายรายการเพื่อระบุตัวตน คุณสามารถระบุคำอธิบายโดยใช้เครื่องหมายจุลภาค

ดังนั้นในกรณีของเรา คำอธิบายสำหรับชื่อตัวแทนจึงกลายเป็น

"nativeclass:=Edit", "attached text:=Agent Name:"

พลวัต Descriptฉันเขียนโปรแกรม

วิธีที่สองในการดำเนินการเดียวกันคือการใช้ไดนามิก Descriptฉันเขียนโปรแกรม

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

ในกรณีเช่นนี้ คุณสามารถใช้ประโยชน์จาก Descriptคลาสไอออน มอบให้โดย QTP

ไวยากรณ์ สำหรับการสร้างวัตถุคำอธิบายก็คือ

Set MyDescription = Description.Create();
MyDescription("property").Value = "property-value";

นี่คือ วิธีการแบบไดนามิก

ทำไมต้องใช้ Descriptฉันเขียนโปรแกรมเหรอ?

การถอดเสียงวิดีโอ

  • คำถามล้านดอลลาร์คือเหตุใดจึงต้องใช้ DP เมื่อ QTP จัดการกระบวนการระบุวัตถุ
  • สมมติว่าคุณได้รับมอบหมายให้ทดสอบพอร์ทัลงาน คุณป้อนคำค้นหาลงในพอร์ทัลและ
  • การทดสอบของคุณคาดหวังให้คุณเลือกงานที่มีอยู่ทั้งหมด และคลิกสมัครงาน
  • แต่จำนวนงานที่สะท้อนจะขึ้นอยู่กับคำค้นหาและงานที่มีอยู่ ณ เวลาที่เรียกใช้สคริปต์ แต่ไม่มีวิธีใดที่จะคาดการณ์ล่วงหน้าได้ว่าไม่มีงานที่จะถูกสะท้อน
  • ในกรณีเช่นนี้ คุณสามารถใช้การเขียนโปรแกรมเชิงพรรณนา แม้ว่าคุณจะไม่ทราบหมายเลขและชื่อของกล่องกาเครื่องหมาย แต่คุณก็ทราบคลาสสำหรับอ็อบเจ็กต์เป็น “WebCheckBox"
  • คุณสามารถใช้ วิธีการ ChildObject เพื่อส่งคืนวัตถุที่เป็นของพาเรนต์โดยเฉพาะ
  • บรรทัดของโค้ดเช่น –
    Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
  • จะส่งคืนออบเจ็กต์ลูกทั้งหมดสำหรับหน้านี้
  • แต่เราต้องการเพียง WebCheck เท่านั้นBox วัตถุ ในการทำเช่นนี้ เราสามารถสร้างวัตถุการสร้างตัวกรองและตั้งค่าคุณสมบัติเป็นกล่องกาเครื่องหมายเว็บ และส่งตัวกรองนี้เป็นอาร์กิวเมนต์สำหรับวิธี ChildObjects
  • ในกรณีนี้ จะมีการส่งคืนเฉพาะช่องกาเครื่องหมายเท่านั้น
  • ขั้นต่อไปคุณสามารถเขียนโค้ดเช่นนี้ซึ่งเข้าถึงคอลเลกชันของกล่องกาเครื่องหมายทั้งหมดโดยเริ่มจากศูนย์และตั้งค่ากล่องกาเครื่องหมายทั้งหมดให้เป็นเปิด
  • จากนั้นคุณสามารถคลิกปุ่มใช้เพื่อทำการทดสอบให้เสร็จสิ้น
  • คุณยังสามารถใช้ Descriptive การเขียนโปรแกรมสำหรับการรันวัตถุที่บันทึกได้ยาก เช่น การซ่อนแผงอัตโนมัติ วัตถุที่มีลำดับชั้นที่เปลี่ยนแปลง วัตถุภายในที่ซ้อนกัน และเมนูย่อย
  • คุณยังสามารถจัดการสตริงขั้นสูงได้โดยใช้การเขียนโปรแกรมเชิงอธิบาย
  • เมื่อใช้ร่วมกับคุณสมบัติดัชนี การเขียนโปรแกรมเชิงพรรณนาอาจมีประโยชน์มากในการระบุวัตถุที่ยาก
  • หากคุณใช้คำอธิบายทางโปรแกรมสำหรับออบเจ็กต์ในลำดับชั้นของออบเจ็กต์ คุณจะต้องใช้การเขียนโปรแกรมคำอธิบายสำหรับออบเจ็กต์ลูกที่ตามมา
  • ตัวอย่างเช่น สำหรับออบเจ็กต์เพจ มีการใช้การเขียนโปรแกรมเชิงอธิบาย แต่สำหรับออบเจ็กต์ลูกที่ประสบความสำเร็จ จะใช้ WinEdit Object Repository ซึ่งไม่ถูกต้อง
  • ตรงกันข้ามกับการใช้โปรแกรมเชิงพรรณนาทั้ง Page และ WinEdit ซึ่งถูกต้อง