إذا، وإلا، نهاية الشرط، موجود في QTP/UFT مع المثال

⚡ ملخص ذكي

عبارات IF و Else و End If UFT و QTP تتفرع البرامج النصية بناءً على شروط وقت التشغيل، بينما تتحقق خاصية Exist مما إذا كان الكائن يظهر على الشاشة قبل تنفيذ الفرع، وتغطي ElseIf و If المتداخلة و Select Case أيضًا.

  • 🔀 بناء الجملة الأساسي: إذا...ثم يقترن بكتلة Else اختيارية وينتهي بـ End If، حيث يتم تشغيل فرع واحد بالضبط لكل تقييم.
  • 🧮 شروط متعددة: تقوم عبارة ElseIf بفحص الشروط من الأعلى إلى الأسفل وتتوقف عند أول تطابق صحيح، لتحل محل سلاسل طويلة من كتل If المنفصلة.
  • 🪆 منطق متداخل: يؤدي وضع شرط If داخل قسم Then أو Else آخر إلى معالجة عمليات التحقق التابعة؛ حافظ على التداخل إلى مستويين أو ثلاثة مستويات لسهولة القراءة.
  • 🎯 حدد الحالة: يقارن متغيرًا واحدًا بعدة قيم ثابتة، ويكون أكثر وضوحًا من سلسلة ElseIf الطويلة.
  • 🔍 خاصية موجودة: تُرجع القيمة True أو False لتحديد ما إذا كان الكائن موجودًا على الشاشة، وهو الشرط القياسي للتفرع If Else.
  • 🧪 مثال تطبيقي: قم بدمج عبارة If Else مع Exist لتوجيه البرنامج النصي تلقائيًا إلى مسار تسجيل دخول حجز الرحلات الجوية السلبي أو الإيجابي.
  • 🤖 مساعدة الذكاء الاصطناعي: يمكن لأدوات الذكاء الاصطناعي صياغة كتل If Else و Select Case وتحديد عبارات End If المفقودة أثناء تصحيح الأخطاء.

ما هي عبارة IF Else في UFT/QTP?

تُعد عبارة IF Else أكثر هياكل التحكم الشرطية شيوعًا في VBScript، وهي لغة البرمجة النصية المستخدمة لكتابة UFT/QTP نصوص الأتمتة. تُمكّن هذه الخاصية النص البرمجي من اتخاذ قرار أثناء التشغيل: فعندما يكون الشرط صحيحًا، يتم تنفيذ مجموعة من التعليمات، وعندما يكون خاطئًا، يتم تنفيذ مجموعة أخرى. يعتمد المختبرون على هذا التركيب باستمرار، على سبيل المثال لتفرع النص البرمجي عند نجاح تسجيل الدخول أو فشله، أو عندما يكون ظهور عنصر ما على الشاشة غير مؤكد. للاطلاع على القائمة الكاملة للعبارات الشرطية وعوامل المقارنة التي يدعمها VBScript، راجع عبارة شرطية في VBScript يرشد.

يتكون الشكل الأساسي من عبارات If…Then مع كتلة Else اختيارية وينتهي دائمًا بـ End If. UFT/QTP يُقيّم الشرط مرة واحدة. إذا كان صحيحًا، تُنفّذ فقط العبارات بين "ثم" و"وإلا"؛ وإذا كان خاطئًا، تُنفّذ فقط العبارات بين "وإلا" و"نهاية الشرط"، ويتم تنفيذ فرع واحد فقط. يتحقق التركيب النحوي أدناه من قيمة عددية ويعرض مربع رسالة مختلفًا لكل نتيجة.

Dim iValue
iValue = 25
If iValue > 18 Then
    MsgBox "Eligible"
Else
    MsgBox "Not Eligible"
End If

In UFT/QTPفي أغلب الأحيان، يقارن الشرط خاصية كائن، أو نتيجة نقطة تفتيش، أو القيمة المُعادة من خاصية Exist، بدلاً من رقم عادي، لأن معظم البرامج النصية تتحقق من صحة التطبيق قيد الاختبار بدلاً من إجراء عمليات حسابية. جميع الأمثلة اللاحقة في هذه الصفحة مبنية على نمط If…Then…Else…End If نفسه الموضح أعلاه؛ الشرط فقط هو الذي يتغير. أيًا كان الشرط الذي تستخدمه، اختبر دائمًا كلا المسارين (صحيح وخاطئ) مرة واحدة على الأقل قبل نقل البرنامج النصي إلى مجموعة اختبارات الانحدار.

عبارة IF…Then…ElseIf…Else في UFT/QTP

لا يختار شرط "إذا/وإلا" العادي إلا بين نتيجتين. عندما يحتاج البرنامج النصي إلى اختبار ثلاثة شروط أو أكثر متنافية، يضيف VBScript شرط "وإلا" إلى نفس الكتلة. UFT/QTP يفحص البرنامج كل شرط من البداية إلى النهاية، وينفذ أول كتلة شرطها صحيح؛ أما باقي الكتل، بما فيها كتلة "وإلا" الأخيرة، فتُتخطى. هذا يجعل البرنامج أكثر وضوحًا من تضمين عدة كتل شرطية غير مترابطة داخل بعضها.

  • يتم تقييم الشروط من الأعلى إلى الأسفل، ويتوقف التقييم عند أول شرط صحيح.
  • كل كلمة مفتاحية من نوع ElseIf تحتاج إلى عبارة Then خاصة بها وشرط خاص بها.
  • يُعدّ شرط "Else" الأخير اختياريًا، ولا يتم تنفيذه إلا عندما لا تتطابق أي من الشروط المذكورة أعلاه.
  • عبارة End If واحدة فقط تغلق الكتلة بأكملها، بغض النظر عن عدد فروع ElseIf التي تحتويها.
Dim iMarks
iMarks = 75
If iMarks >= 90 Then
    MsgBox "Grade A"
ElseIf iMarks >= 75 Then
    MsgBox "Grade B"
ElseIf iMarks >= 50 Then
    MsgBox "Grade C"
Else
    MsgBox "Fail"
End If

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

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

عبارة شرطية متداخلة في UFT/QTP

تضع عبارة If المتداخلة كتلة If…End If كاملة داخل قسم Then أو Else الخاص بكتلة If أخرى. UFT/QTP يُحلّ الشرط الخارجي أولاً، ثم يُقيّم الشرط الداخلي فقط عند الدخول إلى الفرع الخارجي. يُناسب هذا النمط عمليات التحقق التي تعتمد على بعضها البعض، مثل التأكد من بلوغ المستخدم السن القانونية للتصويت، ثم التفرع مرة أخرى بناءً على الجنس، بدلاً من دمج جميع الشروط في تعبير واحد طويل باستخدام "و" و"أو". يُفضّل إبقاء التداخل بسيطًا، بحيث لا يتجاوز مستويين أو ثلاثة، لأن كل طبقة إضافية تُصعّب كتابة البرنامج النصي. trace وتصحيح الأخطاء. في UFT/QTP من حيث المبدأ، تقوم عبارة If المتداخلة عادةً بفحص نظام التشغيل أولاً ثم تتفرع مرة أخرى بناءً على حالة المتصفح أو التطبيق، لذلك لا يتم تشغيل الكتلة الداخلية إلا بعد تأكيد السياق الخارجي.

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

Dim iAge, sGender
iAge = 20
sGender = "Male"
If iAge >= 18 Then
    If sGender = "Male" Then
        MsgBox "Eligible male voter"
    Else
        MsgBox "Eligible female voter"
    End If
Else
    MsgBox "Not eligible to vote"
End If

حدد عبارة الحالة في UFT/QTP

تُعتبر عبارة Select Case بديلاً لسلسلة ElseIf الطويلة عندما يختبر كل فرع نفس المتغير الفردي مقابل قيمة ثابتة مختلفة. UFT/QTP يُقيّم التعبير في سطر "تحديد الحالة" مرة واحدة، ثم يقارنه بكل قيمة من قيم "الحالة" بالتسلسل، ويُشغّل أول كتلة تطابق. يُمكن استخدام "حالة أخرى" اختيارية لمعالجة أي قيمة لا تُغطيها أي من الحالات المذكورة، على غرار "إلس" في نهاية كتلة "إذا". ولأن متغير المقارنة يُكتب مرة واحدة فقط، فإن كتلة "تحديد الحالة" الطويلة أسهل في التحديث لاحقًا من سلسلة مكافئة من عبارات "إلس إذا" التي تُكرر اسم المتغير نفسه في كل فرع.

تُقارن قيم الأحرف باستخدام المساواة، وهي حساسة لحالة الأحرف، لذا تُعتبر "Chrome" و"chrome" متطابقتين مختلفتين ما لم يتم توحيد القيمة أولاً، على سبيل المثال باستخدام دالة LCase. انظر تعريف المتغيرات في VBScript دليل حول كيفية تأثير الأبعاد وأنواع البيانات على هذه المقارنات.

Dim sBrowserName
sBrowserName = "Chrome"
Select Case sBrowserName
    Case "Chrome"
        MsgBox "Launching Chrome"
    Case "Firefox"
        MsgBox "Launching Firefox"
    Case "Edge"
        MsgBox "Launching Edge"
    Case Else
        MsgBox "Browser not supported"
End Select
بيان أفضل لـ عدد الشروط سهولة القراءة على نطاق واسع
إذا... وإلا نتيجتان حالة 1 مرتفع
إذا... وإلا إذا... وإلا عدة شروط غير مترابطة ثلاثة شروط أو أكثر تتساقط مع نمو الفروع
حدد الحالة العديد من القيم الثابتة لمتغير واحد أي رقم يبقى مرتفعا

يمكن أيضًا مطابقة الحالة مع نطاق باستخدام الكلمة المفتاحية Is، على سبيل المثال Case Is > 90 داخل كتلة Select Case، مما يسمح لحالة واحدة بتغطية كل قيمة أعلى من عتبة معينة بدلاً من سرد كل قيمة على حدة.

اختر Select Case عندما يختبر البرنامج النصي متغيرًا واحدًا مقابل العديد من القيم المحتملة؛ احتفظ بـ If…ElseIf للشروط التي تقارن بين متغيرات مختلفة أو تستخدم النطاقات والمعاملات المنطقية.

كيفية استخدام عبارة IF Else مع خاصية Exist في UFT

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

تُرجع الخاصية Exist القيمة True أو False بناءً على ما إذا كان الكائن موجودًا حاليًا في التطبيق قيد الاختبار، مما يجعلها الشرط الأمثل لاستخدامها مع عبارة If Else. يُعيد المثال أدناه النظر في سيناريو وظيفة تسجيل الدخول الكلاسيكي لـ حجز الرحلة تطبيق من الاختبار في هذه السلسلة، يجب أن يتفرع النص البرمجي إلى مسار سيناريو سلبي عند ظهور مربع حوار خطأ، أو إلى مسار سيناريو إيجابي عند عدم ظهوره. وهذا يعكس تمامًا سيناريو الاختبار تمت تغطيتها في الفيديو أعلاه.

  1. سجل نصين منفصلين: أحدهما يسجل الدخول باستخدام اسم وكيل وكلمة مرور صحيحين، والآخر يسجل الدخول باستخدام تركيبة غير صحيحة.
  2. أضف خطوة "إذا/وإلا" مباشرة بعد خطوة تسجيل الدخول حتى يمكن تشغيل كلا التسجيلين داخل نص برمجي واحد مدمج.
  3. قم بتعيين الشرط للتحقق مما إذا كانت نافذة معلومات الخطأ موجودة، باستخدام يوجد خاصية بدلاً من خطوة النقر.
  4. انقل خطوات السيناريو السلبي، مثل إغلاق نافذة الخطأ ومربع حوار تسجيل الدخول، إلى داخل كتلة If.
  5. انقل خطوات السيناريو الإيجابي، مثل إغلاق نافذة حجز الرحلات الجوية، إلى داخل كتلة "وإلا".
  6. احفظ البرنامج النصي المدمج وقم بتشغيله على كل من مجموعة بيانات اعتماد صالحة ومجموعة بيانات اعتماد غير صالحة للتأكد من تنفيذ كل مسار بشكل صحيح.
Dim bLoginFailed
bLoginFailed = Browser("Flight Reservation").Page("Flight Reservation").WinObject("Error").Exist(5)

If bLoginFailed Then
    'Negative scenario - invalid login
    Browser("Flight Reservation").Page("Flight Reservation").WinObject("Error").Close
    Dialog("Login").Close
Else
    'Positive scenario - valid login
    Window("Flight Reservation").Close
End If

إلى جانب عبارات If و Else، يدعم VBScript أيضًا عبارات While…Wend و حلقات التكرار التالية... للتكرار، بالإضافة إلى عبارات ElseIf و Select Case المذكورة أعلاه للفروع الإضافية. إن الجمع بين هذه البنى مع خاصية Exist هو ما يسمح لـ UFT/QTP يتعامل البرنامج النصي مع سيناريوهات الاختبار الإيجابية والسلبية دون تدخل يدوي.

⚠ ملاحظة: تمرير قيمة أطول إلى دالة Exist، مثل Exist(10)، يجعل UFT انتظر فترة أطول حتى يتم تحميل عنصر ما قبل إرجاع القيمة False، وهو أمر مفيد للحوارات بطيئة التحميل، ولكنه قد يُبطئ العملية بأكملها إذا استُخدم في كل خطوة. خصص فترات الانتظار الطويلة للعناصر البطيئة فعلاً. يضمن استخدام مهلة زمنية قصيرة ومُختارة بعناية أن يكون نص السيناريو الإيجابي والسلبي معًا موثوقًا وسريع التنفيذ في عمليات الاختبار المتواصلة.

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

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

يستخدم Exist UFT مهلة المزامنة الافتراضية، عادةً بضع ثوانٍ، ما لم يتم تمرير قيمة مخصصة مثل Exist(10) داخل الأقواس للانتظار لفترة أطول لكائن بطيء التحميل.

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

يمكن لأدوات الذكاء الاصطناعي فحص البرنامج النصي، وتحديد عبارات End If غير المتطابقة وكتل Else التي لا يمكن الوصول إليها، واقتراح الإصلاحات، مما يسرع عملية تصحيح الأخطاء مقارنة بالمراجعة اليدوية سطرًا بسطر للبرامج النصية الطويلة.

نعم. استخدم الكلمة المفتاحية Is داخل سطر Case، على سبيل المثال Case Is > 90، لمطابقة كل قيمة أعلى من الحد الأدنى بدلاً من سرد كل قيمة على حدة.

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