Descriptالبرمجة في QTP/UFT: ديناميكية وثابتة
ما هي تفاصيل Descriptايف البرمجة؟
Descriptتُستخدم البرمجة الافتراضية لتنفيذ العمليات على كائن في AUT لا يتم تخزين تعريفه في مستودع الكائنات. باستخدام هذه الآلية، يمكنك تجاوز التعريف من مستودع الكائنات وتزويد الكائن Descriptايون في البيان نفسه.
يتم استخدام اسم الكائن ببساطة لتعيين كائن في البرنامج النصي مع وصفه في مستودع الكائنات. هذا يعني أنه إذا قمت بتغيير اسم الكائن في البرنامج النصي ومستودع الكائنات، فيجب أن يعمل البرنامج النصي. شاهد الفيديو التالي حول هذا المفهوم
انقر هنا إذا لم يكن من الممكن الوصول إلى الفيديو
ويبرز الفيديو
- احذف الكائن Descriptأيون اسم الوكيل Win Edit Box من مستودع الكائنات. إذا قمت بإجراء الاختبار مرة أخرى فسوف يفشل لأنه لا يمكن التعرف على الكائن. دعونا نتفحص سبب فشل البرنامج النصي
- أثناء وقت التشغيل، يحدد Micro Focus UFT العملية التي يتم إجراؤها على مربع WinEdit والكائن Descriptيتم تخزين الكائن في مستودع الكائنات باسم الوكيل. ويستخدم هذا الاسم لتتبع الكائن في مستودع الكائنات. بالنسبة للكائن الرئيسي، لا يمكنك الحصول على كائنين فرعيين بنفس الاسم. وبالتالي، يقوم QTP بتعيين الكائن في المستودع بشكل فريد. ثم يستخدم الوصف المخزن في مستودع الكائنات ويستبدل الاسم بالوصف. ثم يستخدم هذا البيان لتحديد الكائن في التطبيق قيد الاختبار
- نظرًا لأننا في حالتنا قمنا بحذف وصف الكائن هذا تمامًا، فقد فشل البرنامج النصي
- ولكن ماذا لو قمت، كمختبر، بتحديد أوصاف الكائنات مباشرة في البرنامج النصي الخاص بك بدلاً من استبدال QTP لوصف الكائن. ما هذا إلا"Descriptإيف البرمجة"
انواع من Descriptإيف البرمجة
يمكنك استخدام Descriptالبرمجة إيف بطريقتين
- ساكن
- التفاعل
ساكن Descriptإيف البرمجة
في الطريقة الثابتة، لتحديد هوية الكائن، يمكنك تحديد خاصية الكائن بالتنسيق التالي
property:=values,
يُسمى هذا التنسيق زوج قيمة الخاصية وهو محاط بفواصل مقلوبة
إذا كان الكائن الخاص بك يستخدم أوصاف متعددة لتحديد الهوية، يمكنك تحديد تلك باستخدام الفواصل
لذلك في حالتنا، يصبح وصف اسم الوكيل
"nativeclass:=Edit", "attached text:=Agent Name:"
التفاعل Descriptإيف البرمجة
الطريقة الثانية للقيام بنفس الإجراء هي استخدام Dynamic Descriptإيف البرمجة
في حالة استخدام البرنامج النصي الخاص بك لمرشح كائن البرمجة الوصفي عدة مرات، فسيكون من المتعب للغاية تحديد جميع أزواج قيمة الخاصية لكل عبارة
في مثل هذه الحالات، يمكنك الاستفادة من Descriptفئة ايون المقدمة من QTP
بناء الجملة لإنشاء كائن وصف هو
Set MyDescription = Description.Create(); MyDescription("property").Value = "property-value";
هذا هو الطريقة الديناميكية
لماذا الاستخدام Descriptايف البرمجة؟
نسخة فيديو
- سؤال المليون دولار هو سبب استخدام DP عندما تتم معالجة عملية تحديد الكائن بواسطة QTP
- لنفترض أنه تم تكليفك باختبار بوابة الوظائف. قمت بإدخال استعلام بحث في البوابة و
- يتوقع منك الاختبار تحديد جميع الوظائف المتاحة والنقر فوق تقديم الوظيفة
- لكن عدد الوظائف المنعكسة سيعتمد على استعلام البحث والوظائف المتاحة في وقت تنفيذ البرنامج النصي ولكن لا توجد طريقة للتنبؤ مسبقًا بعدد الوظائف التي ستنعكس
- في مثل هذه الحالات، يمكنك استخدام البرمجة الوصفية. على الرغم من أنك لا تعرف عدد وأسماء مربعات الاختيار، إلا أنك تعرف فئة الكائنات مثل "WebCheck"Box"
- يمكنك استخدام طريقة ChildObject لإرجاع الأشياء التي تنتمي إلى والد معين
- سطر من التعليمات البرمجية مثل -
Set allObjects = Browser("Jobs").Page("QTP").ChildObjects()
- سيتم إرجاع كافة الكائنات التابعة لهذه الصفحة.
- لكننا نريد WebCheck فقطBox الكائنات. للقيام بذلك، يمكننا إنشاء كائن إنشاء مرشح وتعيين خاصيته كخانة اختيار ويب وتمرير هذا المرشح كحجة لطريقة ChildObjects
- في هذه الحالة، سيتم إرجاع مربعات الاختيار فقط.
- بعد ذلك، يمكنك كتابة كود مثل هذا والذي يقوم بالوصول إلى المجموعة الكاملة من مربعات الاختيار بدءًا من الصفر وتعيين جميع مربعات الاختيار على ON.
- وبعد ذلك، يمكنك النقر فوق زر "تطبيق" لإكمال الاختبار
- يمكنك أيضا استخدام Descriptبرمجة ive لتشغيل الكائنات التي يصعب تسجيلها مثل الألواح المخفية تلقائيًا، والكائنات ذات التسلسلات الهرمية المتغيرة، والكائنات الداخلية المتداخلة، والقوائم الفرعية.
- يمكنك أيضًا إجراء عمليات معالجة متقدمة للسلسلة باستخدام البرمجة الوصفية
- بالاشتراك مع خاصية الفهرس، يمكن أن تكون البرمجة الوصفية مفيدة جدًا في تحديد الأشياء الصعبة.
- إذا كنت تستخدم وصفًا برمجيًا لكائن ما في التسلسل الهرمي للكائنات، فستحتاج إلى استخدام برمجة الوصف للكائنات التابعة التالية
- على سبيل المثال، بالنسبة لكائن الصفحة، تم استخدام البرمجة الوصفية ولكن بالنسبة للكائن التابع الناجح، تم استخدام WinEdit Object Repository وهو أمر غير صحيح
- على العكس من ذلك هنا يتم استخدام البرمجة الوصفية لكل من Page وWinEdit وهو الصحيح