المعرف الترتيبي في QTP/UFTمثال على تحديد الكائن

⚡ ملخص ذكي

المعرف الترتيبي في QTP/UFT هو العامل الحاسم في حالة التعادل UFT ينطبق هذا عندما لا تزال الخصائص الإلزامية والمساعدة تطابق أكثر من كائن واحد، باستخدام قيم Index أو Location أو CreationTime لاختيار كائن فريد واحد.

  • 🎯 الحل الأخير: UFT يضيف مُعرّفًا ترتيبيًا فقط بعد فشل الخصائص الإلزامية والمساعدة في جعل الوصف فريدًا.
  • 🔢 الفهرس: Numbers الكائنات من نفس الفئة حسب ترتيب الكود المصدري، بدءًا من 0، لذا فإن index:=3 يستهدف التطابق الرابع.
  • 📍 المكان Numbers ترتيب العناصر حسب موضعها على الشاشة داخل النافذة أو الإطار أو مربع الحوار، من الأعلى إلى الأسفل ومن اليسار إلى اليمين.
  • 🕒 وقت الإنشاء: ينطبق هذا فقط على كائنات المتصفح ويسجل الترتيب الذي تم به فتح كل مثيل من المتصفح.
  • 🗂️ تحديد الكائن: يمكن تعديل النوع الترتيبي الافتراضي لكل فئة من فئات كائنات الاختبار ضمن الأدوات > تحديد الكائن.
  • ⌨️ Descriptالبرمجة الحية: قم بتمرير الفهرس أو الموقع أو وقت الإنشاء كخاصية عادية داخل سلسلة وصف الكائن.
  • ⚠️ الهشاشة: تتغير القيم الترتيبية كلما تغير تخطيط الصفحة، لذا تعامل معها كحل مؤقت، وليس كخيار تصميمي.

المعرف الترتيبي في QTP/UFT تم شرح ذلك باستخدام الفهرس والموقع ووقت الإنشاء

ما هو المعرف الترتيبي في QTP/UFT?

An المعرف الترتيبي هي خاصية عددية UFT (سابقا QTPيُضيف هذا الخيار وصفًا للكائن عندما لا تكفي الخصائص الإلزامية والمساعدة التي تم جمعها أثناء جلسة التسجيل لتحديد الكائن بشكل فريد. وبدلًا من الفشل، يعتمد البرنامج على عداد يُشير، في الواقع، إلى "أخذ الكائن الثالث من هذه الفئة".

يوجد نوع مُعرِّف ترتيبي افتراضي لكل فئة من فئات كائنات الاختبار. يختلف ترقيم WebEdit عن ترقيم WinButton، ويختلف ترقيم Browser أيضًا. يمكنك عرض أو تعديل المُعرِّف الترتيبي الافتراضي لأي فئة في نافذة تعريف الكائنات.

إعداد المعرف الترتيبي في QTP/UFT نافذة تحديد الكائن

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

توجد ثلاثة أنواع من المعرفات الترتيبية في UFT:

  1. على أساس الفهرس
  2. معتمد على الموقع
  3. وقت الابتكار

لماذا UFT لا يستخدم المعرفات الترتيبية إلا كملاذ أخير

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

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

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

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

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

أنواع المعرفات الترتيبية في UFT/QTP

على أساس الفهرس

  • عند استخدام مُعرِّف ترتيبي قائم على الفهرس، UFT يُسند قيمة إلى مؤشر خاصية الكائن أثناء التسجيل.
  • تعتمد القيمة على ترتيب ظهور الكائن داخل الكود المصدري، وليس على الشاشة.
  • أول ظهور له قيمة 0.
  • تكون قيم خاصية الفهرس خاصة بالكائن، لذلك يتم حساب كل فئة من فئات كائنات الاختبار بشكل منفصل.
  • لذلك، إذا استخدمتَ index:=3 لوصف كائن اختبار WebEdit، UFT يبحث عن عنصر WebEdit الرابع في الصفحة.
  • وبالمثل، إذا استخدمت index:=1 لوصف كائن اختبار WebButton، UFT يبحث عن عنصر WebButton الثاني في الصفحة.

معتمد على الموقع

  • عند استخدام مُعرِّف ترتيبي قائم على الموقع، UFT يُسند قيمة إلى موقع خاصية للكائن لتحديده بشكل فريد.
  • تعتمد القيمة على الترتيب الذي يظهر به الكائن داخل النافذة أو الإطار أو مربع الحوار، فيما يتعلق بالكائنات الأخرى ذات الخصائص المتطابقة.
  • أول ظهور للكائن هو 0.
  • يتم تعيين القيم في أعمدة، من الأعلى إلى الأسفل ثم من اليسار إلى اليمين.
  • الموقع هو المعرف الترتيبي الافتراضي لمعظم المعايير Windows اختبار فئات الكائنات، حيث يكون التخطيط المرئي أكثر استقرارًا من ترتيب الترميز.

وقت الابتكار

  • عند استخدام المعرف الترتيبي لوقت الإنشاء، UFT يُسند قيمة إلى وقت الإنشاء خاصية لكائن المتصفح.
  • هذا المعرف متاح فقط لبيئة الويب ولعناصر اختبار المتصفح فقط.
  • تشير القيمة إلى ترتيب فتح المتصفح بالنسبة للمتصفحات المفتوحة الأخرى.
  • يتلقى المتصفح الأول الذي يتم فتحه أثناء التشغيل وقت الإنشاء = 0، وتتلقى المتصفحات اللاحقة 1 و2 و3 وهكذا.
  • إذا تم إغلاق متصفح، فإن المتصفحات المتبقية تحتفظ بقيمها الأصلية بدلاً من إعادة ترقيمها.

جدول مقارنة بين الفهرس والموقع ووقت الإنشاء

تجيب المعرفات الثلاثة على ثلاثة أسئلة مختلفة، ويُعد اختيار المعرف الخاطئ سببًا متكررًا للأعطال المتقطعة.

البعد فهرس المدينة المنورة - بجوار المسجد النبوي وقت الابتكار
اسم الخاصية مؤشر موقع وقت الإنشاء
أساس الطلب ترتيب الكود المصدري / التسلسل الهرمي للكائنات موضع الشاشة داخل النافذة أو الإطار أو مربع الحوار ترتيب فتح نوافذ المتصفح
قاعدة العد بالتسلسل، لكل فئة كائن اختبار الأعمدة، من الأعلى إلى الأسفل ثم من اليسار إلى اليمين بشكل متسلسل، لكل مثيل متصفح
القيمة الأولى 0 0 0
ينطبق على الويب و Windows فصول معياري بشكل أساسي Windows فصول كائنات المتصفح فقط
يتعطل عندما تغييرات ترتيب العلامات يتم تغيير موضع التخطيط أو تغيير حجمه Windows افتح بتسلسل مختلف
أفضل يستخدم لـ عناصر تحكم الشبكة المتكررة أو الجدول نماذج سطح المكتب القديمة ذات التخطيط الثابت تدفقات الويب متعددة النوافذ مثل النوافذ المنبثقة للدفع

كيفية تعيين المعرف الترتيبي في مستودع الكائنات

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

  1. ساعات العمل UFT وحدد الأدوات > تحديد الكائنات.
  2. اختر البيئة، على سبيل المثال الويب أو المعيار Windows، من القائمة المنسدلة للبيئة.
  3. حدد فئة كائن الاختبار التي تريد تغييرها، مثل WebEdit أو WinButton.
  4. في خانة رمز الخصم، أدخل TABBYDAY. المعرف الترتيبي القسم، حدد الفهرس، أو الموقع، أو وقت الإنشاء، أو لا شيء.
  5. انقر OK وإعادة تعلم الكائن بحيث يتم التقاط القيمة الترتيبية الجديدة.
  6. افتح مستودع الكائنات، وحدد الكائن، وتأكد من ظهور الخاصية الترتيبية الآن في قائمة الوصف.

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

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

كيفية استخدام المعرفات الترتيبية في Descriptإيف البرمجة

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

' Ordinals are zero based: index:=3 is the FOURTH WebEdit on the page
Set objPage = Browser("Guru99 Bank").Page("Guru99 Bank")

objPage.WebEdit("index:=3").Set "9999999999"
Print "Filled WebEdit occurrence #" & (3 + 1)

' Location is counted top to bottom, then left to right
objPage.WebButton("location:=1").Click
Print "Clicked WebButton occurrence #" & (1 + 1)

' CreationTime works only on Browser objects
Print "Switching to browser opened at position #" & (1 + 1)
Browser("creationtime:=1").Sync

الإخراج:

Filled WebEdit occurrence #4
Clicked WebButton occurrence #2
Switching to browser opened at position #2

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

Dim oDesc, oChildren, intIndex

Set oDesc = Description.Create()
oDesc("micclass").Value = "WebEdit"
oDesc("html tag").Value = "INPUT"

Set oChildren = objPage.ChildObjects(oDesc)
intIndex = 9

If intIndex < oChildren.Count Then
    oChildren(intIndex).Set "Guru99"
Else
    Print "Index " & intIndex & " is out of range; only " & oChildren.Count & " objects match"
End If

الإخراج:

Index 9 is out of range; only 5 objects match

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

أخطاء شائعة عند استخدام المعرفات الترتيبية

معظم العيوب المتعلقة بالترتيب tracلنعد إلى مجموعة صغيرة من الأخطاء المتكررة.

  • العد من 1. يبدأ كل مُعرّف ترتيبي من 0. كتابة index:=1 للحقل الأول هو الخطأ الأكثر شيوعًا ويؤدي إلى فشل بمقدار واحد يبدو وكأنه مشكلة في التوقيت.
  • الخلط بين الفهرس والموقع. يتبع الفهرس شفرة المصدر، بينما يتبع الموقع الشاشة. في صفحة يُعاد فيها ترتيب العناصر باستخدام CSS، تختلف القيمتان، ويتم تبديلهما.ping يستهدفون عنصر التحكم الخاطئ بصمت.
  • استخدام CreationTime خارج بيئة الويب. توجد هذه الخاصية فقط في كائنات المتصفح. تطبيقها على كائن صفحة أو إطار أو نافذة يُسبب خطأً يتعلق بخاصية غير مدعومة.
  • إدخال قيمة ترتيبية بشكل ثابت في دالة مشتركة. تصبح الدالة القابلة لإعادة الاستخدام والتي تفترض أن index:=2 غير قابلة للاستخدام في اللحظة التي تستدعيها فيها شاشة ثانية بتصميم مختلف.
  • ترك الأرقام الترتيبية في المستودع بعد استقرار التطبيق. بمجرد أن يضيف المطورون معرفات ثابتة، قم بإعادة النظر في الكائنات واستبدل الترتيب بالخاصية الجديدة.
  • الاعتماد على الأعداد الترتيبية داخل الحلقات فوق الشبكات. تفضل ChildObjects، والتي تُرجع مجموعة مباشرة، لذا فإن العدد يعكس الصفحة الحالية بدلاً من الصفحة المسجلة.

المصادر

قم بتنزيل صفحات الويب المستخدمة في الدرس التعليمي أعلاه للتدرب الذاتي.

تُعدّ المعرّفات الترتيبية جزءًا صغيرًا من نموذج تعريف الكائنات. لمعرفة كيفية اندماجها في سير العمل الأوسع، تابع القراءة الكاملة. QTP/UFT سلسلة التدريبراجع الأساسيات في اختبار البرمجياتتعرّف على كيفية إدارة النتائج في برنامج تعليمي حول HP ALMوقارن استراتيجيات تحديد المواقع مع Selenium البرنامج التعليمي.

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

يختلف الإعداد الافتراضي باختلاف الفئة. معظم كائنات اختبار الويب مثل WebEdit وWebButton تستخدم الإعداد الافتراضي Index، بينما تستخدم كائنات المتصفح الإعداد الافتراضي CreationTime، وStandard. Windows يتم تعيين الفئات افتراضياً إلى الموقع. كل إعداد افتراضي مرئي وقابل للتعديل في نافذة تعريف الكائن.

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

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

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

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

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

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

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