إذا، وإلا، نهاية الشرط، موجود في QTP/UFT مع المثال
⚡ ملخص ذكي
عبارات IF و Else و End If UFT و QTP تتفرع البرامج النصية بناءً على شروط وقت التشغيل، بينما تتحقق خاصية Exist مما إذا كان الكائن يظهر على الشاشة قبل تنفيذ الفرع، وتغطي ElseIf و If المتداخلة و Select Case أيضًا.
ما هي عبارة 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. يُعيد المثال أدناه النظر في سيناريو وظيفة تسجيل الدخول الكلاسيكي لـ حجز الرحلة تطبيق من الاختبار في هذه السلسلة، يجب أن يتفرع النص البرمجي إلى مسار سيناريو سلبي عند ظهور مربع حوار خطأ، أو إلى مسار سيناريو إيجابي عند عدم ظهوره. وهذا يعكس تمامًا سيناريو الاختبار تمت تغطيتها في الفيديو أعلاه.
- سجل نصين منفصلين: أحدهما يسجل الدخول باستخدام اسم وكيل وكلمة مرور صحيحين، والآخر يسجل الدخول باستخدام تركيبة غير صحيحة.
- أضف خطوة "إذا/وإلا" مباشرة بعد خطوة تسجيل الدخول حتى يمكن تشغيل كلا التسجيلين داخل نص برمجي واحد مدمج.
- قم بتعيين الشرط للتحقق مما إذا كانت نافذة معلومات الخطأ موجودة، باستخدام يوجد خاصية بدلاً من خطوة النقر.
- انقل خطوات السيناريو السلبي، مثل إغلاق نافذة الخطأ ومربع حوار تسجيل الدخول، إلى داخل كتلة If.
- انقل خطوات السيناريو الإيجابي، مثل إغلاق نافذة حجز الرحلات الجوية، إلى داخل كتلة "وإلا".
- احفظ البرنامج النصي المدمج وقم بتشغيله على كل من مجموعة بيانات اعتماد صالحة ومجموعة بيانات اعتماد غير صالحة للتأكد من تنفيذ كل مسار بشكل صحيح.
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، وهو أمر مفيد للحوارات بطيئة التحميل، ولكنه قد يُبطئ العملية بأكملها إذا استُخدم في كل خطوة. خصص فترات الانتظار الطويلة للعناصر البطيئة فعلاً. يضمن استخدام مهلة زمنية قصيرة ومُختارة بعناية أن يكون نص السيناريو الإيجابي والسلبي معًا موثوقًا وسريع التنفيذ في عمليات الاختبار المتواصلة.

