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ฉันเขียนโปรแกรมได้สองวิธี
- คงที่
- พลวัต
คงที่ 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 ซึ่งถูกต้อง