GetRoProperty، GetToProperty في QTP/UFT مع المثال

⚡ ملخص ذكي

يكشف Object Spy عن خصائص وأساليب أي عنصر تحكم في التطبيق قيد الاختبار، بينما تقوم GetROProperty وGetTOProperty وSetTOProperty بقراءة وكتابة قيم تلك الخصائص من QTP or UFT نص برمجي واحد في وقت التشغيل.

  • 🔎 التجسس على الأشياء أولاً: قم بتوجيهه إلى عنصر تحكم لعرض خصائص كائن الاختبار، وخصائص وقت التشغيل، والأساليب، والتسلسل الهرمي الكامل.
  • ☑️ عالمان للأشياء: كائن الاختبار هو الوصف المخزن؛ كائن وقت التشغيل هو عنصر التحكم المباشر في التطبيق.
  • ✅ GetROProperty: يقرأ القيمة الحالية من عنصر التحكم المباشر، لذلك يجب أن يكون التطبيق مفتوحًا ويجب أن يكون الكائن موجودًا.
  • 🧪 GetTOProperty: يقرأ الوصف المخزن بدلاً من ذلك، ولهذا السبب يمكن أن تُرجع الطريقتان قيمًا مختلفة.
  • 🛠️ SetTOProperty: يُغير الوصف لهذه العملية فقط؛ لا يتم المساس بالمستودع أبدًا ويتم تجاهل التغيير في النهاية.
  • 📌 لا يوجد SetROProperty: يمكن للبرنامج النصي قراءة التطبيق ولكنه لا يستطيع كتابة خاصية فيه.

Object Spy وطرق GetROProperty و GetTOProperty و SetTOProperty في QTP و UFT واحد

يوضح هذا البرنامج التعليمي كائن تجسس.

يمكن أن يساعد Object Spy في تحديد الخصائص والأساليب المفيدة المرتبطة بكائن ما في بيئتك.

إتش بي/مايكرو فوكس UFT الدروس يصف أيضا GetROProperty و GetTOProperty و SetTOProperty.

⚠️ ملاحظة حول الإصدار: الأداة الموصوفة هنا تم شحنها تحت اسم HP QuickTest Professional، ثم أصبحت Micro Focus Unified Functional Testing، وتباع اليوم تحت اسم OpenText الاختبار الوظيفي (UFT واحد). لا تزال خاصية التجسس على الكائنات والطرق الثلاث تعمل تمامًا كما هو موضح أدناه.

انقر اضغط هنا إذا لم يكن من الممكن الوصول إلى الفيديو

كائن تجسس

  • خاصية التجسس على الأشياء هي إحدى ميزات QTP والتي يمكنك من خلالها عرض خصائص وأساليب كل من كائن وقت الاختبار ووقت التشغيل.
  • كما أنه يوفر بناء الجملة للطريقة المحددة.
  • يُظهر برنامج Object Spy التسلسل الهرمي الكامل للكائن الذي قمت بتحديده.

يُعدّ هذا التسلسل الهرمي مهمًا، لأن اسم الخاصية المنسوخ من Object Spy هو السلسلة النصية التي تتوقعها الطرق الثلاث أدناه. لذا، فإنّ التجسس على الكائن هو الخطوة الأولى في كل مهمة استرجاع خصائص تقريبًا.

GetROProperty

  • GetROProperty – هي طريقة مدمجة تستخدم لاسترداد قيمة وقت التشغيل لخاصية الكائن.

تتضمن عملية استخدام GetROProperty أربع خطوات:

  1. سجّل الكائن الذي تريد استخدام GetROProperty عليه في مستودع الكائن.
  2. يُحدد الكائن المُسجل خاصية وقت التشغيل التي يُمكن استخدامها. يُمكنك استخدام أداة Object Spy.
  3. استخدم طريقة GetROProperty لاسترداد خاصية وقت التشغيل المحددة وتخزين القيمة في متغير.
  4. استخدم هذه القيمة لإجراء المزيد من الخصومات.

لأن القيمة تُقرأ من عنصر التحكم المباشر، يجب أن يكون التطبيق مفتوحًا ويجب أن يكون الكائن موجودًا بالفعل على الشاشة عند تشغيل السطر.

SetTOProperty و GetTOProperty

  • لنفترض وجود زر ويب مخزن في مستودع الكائنات.
  • عند تشغيل الاختبار QTP يقوم بإنشاء نسخة من هذا الكائن تسمى كائن الاختبار ويقارنها مع كائن وقت التشغيل
  • باستخدام GetTOProperty يمكنك استرداد قيمة خاصية من خصائص كائن الاختبار
  • باستخدام SetTOProperty يمكنك تغيير قيمة الخاصية لكائن الاختبار
  • عند اكتمال الاختبار، يتم التخلص من كائن الاختبار هذا، وكذلك أي تعديلات أجريتها على خصائص الكائن باستخدام SetTOProperty
  • عند إعادة تشغيل الاختبار، يتم إنشاء نسخة جديدة من كائن الاختبار بقيم الخصائص الأصلية المخزنة في مستودع الكائنات
  • يمكنك التفكير في استخدام GetTOProperty و SetTOProperty عندما يحتوي نص الاختبار الخاص بك على عدة أسطر من التعليمات البرمجية ويكون بيئة التشغيل لديك متقطعة.
  • ملاحظة: لا يوجد أمر SetROProperty

بناء الجملة والأمثلة

تُستدعى الطرق الثلاث جميعها على كائن اختبار في نهاية التسلسل الهرمي الخاص به، وتأخذ جميعها اسم خاصية الوصف كسلسلة نصية. يوضح الجدول توقيع كل منها.

الأسلوب بناء الجملة يقرأ أو يكتب
GetROProperty object.GetROProperty(Property) يقرأ عنصر التحكم المباشر في التطبيق
GetTOProperty object.GetTOProperty(Property) يقرأ وصف كائن الاختبار المخزن
SetTOProperty object.SetTOProperty Property, Value يكتب وصف كائن الاختبار لهذه العملية فقط

قراءة قيمة وقت التشغيل تتم عبر عبارة واحدة. هذا المثال مأخوذ من مرجع رسمي لاسترجاع وتعيين القيم، يقوم بسحب عنوان الهدف للرابط أثناء جلسة التشغيل.

link_href = Browser("Technologies").Page("Technologies").Link("Jobs").GetROProperty("href")

كتابة خاصية كائن الاختبار ثم قراءتها عملية سريعة بنفس القدر. يقوم المثال التالي بتعيين اسم زر الإرسال إلى "زري" ثم يقرأ القيمة نفسها مباشرةً.

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 إلى كائن وقت التشغيل، وTO إلى كائن الاختبار، ويقرأ كل منهما من مكان مختلف.

نقطة المقارنة GetROProperty GetTOProperty
مصدر القيمة التحكم المباشر في التطبيق قيد التشغيل الوصف المخزن لكائن الاختبار
يجب أن يكون التقديم مفتوحًا نعم لا
يرى تغييرًا في SetTOProperty لا نعم، بالنسبة للدورة الحالية
الاستخدام النموذجي التحقق مما يراه المستخدم فعلياً التحقق من كيفية تحديد الكائن أو تصحيحه
مُعدٌّ للمطابقة لا يوجد شيء - لا يوجد SetROProperty SetTOProperty

يُظهر التباين المُطبق الفرق بوضوح. قم بتعيين مُعرّف HTML لقائمة لا تحتوي على أي مُعرّف، ثم اقرأها بالطريقتين: تُعيد دالة GetROProperty سلسلة نصية فارغة لأن التطبيق لم يتغير، بينما تُعيد دالة GetTOProperty القيمة التي كُتبت للتو في الوصف.

الأخطاء الشائعة وكيفية إصلاحها

تفشل عملية استرجاع الخصائص لعدد قليل من الأسباب المتوقعة. يوضح الجدول الأسباب التي يواجهها المختبرون في أغلب الأحيان.

عرض سبب حل
تُعيد هذه العملية سلسلة نصية فارغة اسم الخاصية خاطئ، أو أن الكائن لا يعرضها. قم بفحص العنصر مرة أخرى وانسخ اسم الخاصية تمامًا كما هو مدرج
لم يتم العثور على الكائن في سطر GetROProperty لم يتم عرض عنصر التحكم بعد أضف خطوة مزامنة قبل القراءة
تتجاهل دالة GetROProperty تغيير دالة SetTOProperty تعالج الطريقتان كائنات مختلفة بحكم التصميم. اقرأ التغيير مرة أخرى باستخدام GetTOProperty بدلاً من ذلك
يختفي تغيير SetTOProperty تدوم تعديلات كائن الاختبار فقط خلال التشغيل الحالي قم بتحرير الكائن في المستودع، أو استخدم البرمجة الوصفية
تُثير الدالة SetROProperty خطأً في بناء الجملة لا توجد طريقة كهذه قم بتوجيه التطبيق خلال خطوة عادية مثل التعيين أو النقر

هناك عادتان تمنعان معظم هذه الحالات: الأولى هي فحص عنصر التحكم قبل كتابة السطر بدلاً من تخمين اسم الخاصية، والثانية هي الاحتفاظ بـ فبسكريبت يتم استدعاء عمليات الاسترجاع بالقرب من الخطوة التي تحتاج إلى القيمة، لذلك يظل الكائن معروضًا على الشاشة عند حدوث القراءة.

الأسئلة الشائعة

يعرض برنامج Object Spy خصائص التعريف التي يحتفظ بها البرنامج لهذا الصنف، بالإضافة إلى الخصائص الأصلية التي يعرضها المتصفح. ويمكن الوصول إلى قيم السمات والأنماط باستخدام بادئات السمات والأنماط الموجودة داخل سلسلة الخاصية.

ينتمي كائن وقت التشغيل إلى التطبيق، وليس إلى الاختبار، لذا لن تقوم الأداة بالكتابة فيه. لتغيير ما يحتويه التطبيق، قم بتوجيه عنصر التحكم بخطوة عادية مثل "تعيين" أو "تحديد" أو "نقر".

لا. يتم حذف كائن الاختبار المؤقت عند انتهاء التشغيل، ويتم إنشاء نسخة جديدة منه من المستودع في المرة القادمة. أما التغييرات الدائمة فتُحفظ في مستودع الكائنات نفسه.

نعم. يقبل الكائن الموصوف المُنشأ مباشرةً نفس الاستدعاءات، لذا تعمل دالة GetROProperty مع البرمجة الوصفية أيضًا. ثم تُعيد دالة GetTOProperty القيمة من الوصف المضمن بدلاً من إدخال مُخزّن.

تقوم أدوات تحديد المواقع المدعومة بالذكاء الاصطناعي بترتيب عدة خصائص مرشحة لنفس عنصر التحكم، وتُصلح أي وصف معيب عند تغيير إحدى سماته. هذا يقلل من الحاجة إلى التدقيق اليدوي، مع أن الخاصية المقترحة لا تزال بحاجة إلى مراجعة بشرية.

يُكمل برنامج Copilot عملية تحديد التسلسل الهرمي واستدعاء الدوال بمجرد رصده بضعة أسطر متشابهة في الملف. لا يمكنه معرفة أسماء الكائنات الحقيقية أو الخصائص التي يعرضها عنصر التحكم، لذا تحقق من كل سلسلة نصية مُولّدة باستخدام أداة Object Spy.

أداة فحص الكائنات هي أداة فحص تعرض القيم أثناء إنشاء البرنامج النصي. نقطة التحقق هي خطوة تُنفذ داخل الاختبار وتُبلغ عن نجاح الاختبار أو فشله بناءً على قيمة متوقعة مخزنة.

فقط إذا كان العنصر لا يزال موجودًا في التطبيق. أما عنصر التحكم الذي لم يتم عرضه، أو الذي تمت إزالته من الصفحة، فيُظهر خطأ "العنصر غير موجود" بدلاً من إرجاع قيمة فارغة.

تلخيص هذه التدوينة بـ: