متغيرات المتجر، الصدى، التنبيه، التعامل مع النوافذ المنبثقة Selenium IDE
⚡ ملخص ذكي
قم بتخزين الأوامر في Selenium تقوم بيئة التطوير المتكاملة بحفظ قيم وقت التشغيل في متغيرات مسماة، وتطبعها أداة echo في السجل، وتتعامل مجموعة أوامر مخصصة مع التنبيهات ومربعات حوار التأكيد والتبديل بين نوافذ المتصفح المتعددة.
ستتعلم في هذا الدرس أوامر المتجر، وأمر الصدى، وكيفية التعامل مع التنبيهات والنوافذ المنبثقة في Selenium IDE. تعمل هذه الأوامر مجتمعة على تحويل نص برمجي مسجل ثابت إلى نص يتفاعل مع أي شيء يعيده التطبيق في وقت التشغيل.
⚠️ ملاحظة حول الإصدارات: لقطات الشاشة أدناه مأخوذة من النسخة الأصلية Firefox-توصيل في Selenium بيئة التطوير المتكاملة (IDE)، وتستخدم الأوامر أسماءها المكتوبة بأسلوب CamelCase Selenese. متصفح Chrome الحالي، Firefox ويحافظ امتداد Edge على نفس السلوك، لكنه يكتب معظم أسماء الأوامر بمسافات. خريطةping يظهر الجدول قرب نهاية هذه المقالة، وتم الحفاظ على كل أمر أصلي ولقطة شاشة كما تم نشرها.
Selenium متغيرات IDE
المتجر
لتخزين المتغيرات في Selenium بيئة التطوير المتكاملة (IDE)، نستخدم متجر الأمر. يوضح الرسم التوضيحي أدناه كيفية تخزين القيمة "tutorial" في متغير يسمى "myVariable".
للوصول إلى المتغير، ما عليك سوى وضعه بين الرمز ${ … }. على سبيل المثال، لإدخال قيمة "myVariable" في مربع نص "userName" الخاص بـ Mercury الجولات، أدخل ${myVariable} في حقل القيمة.
أمر الصدى في Selenium IDE
يكون المتغير المخزن غير مرئي حتى تتم طباعته، وهذا ما... صدى يقوم الأمر بذلك. فهو يكتب رسالة في لوحة سجل بيئة التطوير المتكاملة أثناء التشغيل، مما يجعله أسرع طريقة للتأكد من أن أمر التخزين قد التقط ما توقعته قبل بناء التأكيدات عليه.
يقبل الأمر كلا الشكلين التاليين:
- سلسلة نصية حرفية. ضع النص في Target على سبيل المثال، الحقل اكتملت عملية تسجيل الدخول، لتحديد نقطة تفتيش في نص طويل.
- متغير. ضع ${myVariable} في Target يتم طباعة الحقل والقيمة المخزنة بدلاً من الاسم.
هناك عادتان تجعلان أداة echo أكثر فائدة مما تبدو عليه للوهلة الأولى. اطبع المتغير مباشرةً بعد أمر store الذي أنشأه، حتى يكون الفشل واضحًا. tracيُضاف الأمر ed إلى عملية الالتقاط بدلاً من التأكيد بعد عشرين خطوة. ويُضاف إلى كل رسالة اسم الخطوة التي تنتمي إليها، لأن لوحة السجل تعرض جميع الأوامر في قائمة واحدة. لاحظ أن الأمر echo يكتب فقط في السجل - فهو لا يُغير الصفحة أبدًا ولا يفشل في أي اختبار، لذا من الآمن تركه في البرنامج النصي بشكل دائم.
StoreElementPresent
يخزن هذا الأمر إما "صحيح" أو "خطأ" بناءً على وجود العنصر المحدد. يخزن البرنامج النصي أدناه القيمة المنطقية "صحيح" في "var1" و"خطأ" في "var2". وللتحقق، سنستخدم الأمر echo لعرض قيم var1 وvar2. URL تم ضبط الرسم التوضيحي أدناه على Mercury الصفحة الرئيسية للجولات.
نص المتجر
يُستخدم هذا الأمر لتخزين النص الداخلي لعنصر ما في متغير. يوضح الرسم التوضيحي أدناه كيفية تخزين النص الداخلي لوسم h1 في صفحة التسجيل على فيسبوك في متغير يُسمى "textVar".
بما أنه العنصر الوحيد من نوعه في الصفحة، فمن الآمن استخدام "css=h1" كهدف لنا. توضح الصورة أدناه ذلك. Selenium تمكن برنامج IDE من حفظ السلسلة "Sign Up" في المتغير "textVar"، لأن الأمر echo طبع قيمته بشكل صحيح.
التنبيهات والنوافذ المنبثقة والمتعددة Windows
ربما تكون التنبيهات أبسط أشكال النوافذ المنبثقة. وهي الأكثر شيوعًا Selenium الأوامر IDE المستخدمة في التعامل مع التنبيهات هي التالية:
| التنبيهات | استخدام |
|---|---|
|
assertAlert assertNotAlert |
يسترجع رسالة التنبيه ويقارنها بقيمة نصية قمت بتحديدها |
|
AssurerAlertPresent AssurerAlertNotPresent |
يؤكد ما إذا كان هناك تنبيه أم لا |
| تنبيه المتجر | يسترجع رسالة التنبيه ويخزنها في متغير تحدده أنت |
| storeAlertPresent | تُرجع الدالة القيمة TRUE في حالة وجود تنبيه، والقيمة FALSE في حالة عدم وجوده. |
|
التحقق من التنبيه VerifyNotAlert |
يسترجع رسالة التنبيه ويتحقق مما إذا كانت تساوي قيمة السلسلة التي حددتها |
|
checkAlertPresent checkAlertNotPresent |
يتحقق مما إذا كان هناك تنبيه أم لا |
تذكر هذين الأمرين عند التعامل مع التنبيهات:
- Selenium يقوم برنامج IDE بالنقر تلقائيًا على زر "موافق" في نافذة التنبيه، لذلك لن تتمكن من رؤية التنبيه الفعلي.
- Selenium لا يمكن لبيئة التطوير المتكاملة (IDE) التعامل مع التنبيهات التي تظهر داخل دالة onload() الخاصة بالصفحة. فهي تتعامل فقط مع التنبيهات التي يتم إنشاؤها بعد اكتمال تحميل الصفحة.
في هذا المثال، نستخدم أمر storeAlert لإظهار أنه على الرغم من Selenium لم يعرض برنامج IDE التنبيه الفعلي، ولكنه تمكن مع ذلك من استرداد الرسالة.
الخطوة 1) In Selenium بيئة التطوير المتكاملة، اضبط الأساس URL إلى http://jsbin.com. النص الكامل URL الرابط هو http://jsbin.com/usidix. تعود هذه المقتطفات البرمجية من jsbin إلى... Firefox- قد لا تعمل هذه الخاصية في عصر الإضافات؛ أي صفحة تحتوي على زر يُصدر تنبيهًا تُعيد إنتاج نفس النتيجة.
الخطوة 2) أنشئ البرنامج النصي كما هو موضح أدناه. يستهدف أمر النقر زر "انطلق!"، ويقوم storeAlert بالتقاط الرسالة في alertMessage، ثم يقوم echo بطباعتها.
الخطوة 3) نفّذ البرنامج النصي، ولا تتوقع رؤية التنبيه الفعلي. يعرض جزء السجل أدناه الرسالة الملتقطة على الرغم من أن مربع الحوار لم يكن مرئيًا أبدًا.
تأكيدات
تُعدّ رسائل التأكيد نوافذ منبثقة تحتوي على زرّي "موافق" و"إلغاء"، على عكس التنبيهات التي تحتوي على زر "موافق" فقط. وتتشابه الأوامر التي يمكنك استخدامها في التعامل مع رسائل التأكيد مع أوامر التنبيهات.
- تأكيد التأكيد / تأكيد عدم التأكيد
- assertConfirmationPresent / assertConfirmationNotPresent
- تأكيد المتجر
- تأكيد المتجر موجود
- تأكيد التأكيد / عدم التأكيد
- verifyConfirmationPresent / verifyConfirmationNotPresent
بالإضافة إلى ذلك، تخبر هذه الأوامر Selenium أي زر يجب اختياره، موافق أم إلغاء؟
- اختر موافق عند التأكيد التالي / اختر موافق عند التأكيد التالي وانتظر
- اختر إلغاء عند التأكيد التالي
ضع هذه الأوامر قبل الأمر الذي يُفعّل مربع التأكيد، بحيث Selenium يعرف برنامج IDE مسبقًا الخيار الذي يجب اختياره. ومرة أخرى، لن ترى مربع التأكيد الفعلي أثناء تنفيذ البرنامج النصي.
لنختبر صفحة ويب تحتوي على زر تمت برمجته للإبلاغ عما إذا كان المستخدم قد ضغط على "موافق" أو "إلغاء".
الخطوة 1) In Selenium بيئة التطوير المتكاملة، اضبط الأساس URL إلى http://jsbin.com. النص الكامل URL الرابط هو http://jsbin.com/enifaf.
الخطوة 2) أنشئ البرنامج النصي كما هو موضح أدناه. هذه المرة سنضغط على زر "موافق" أولاً.
الخطوة 3) قم بتشغيل البرنامج النصي ولاحظ أنك لا ترى التأكيد الفعلي، ومع ذلك لا تزال صفحة الويب تُظهر الزر الذي تم تحديده Selenium تم الضغط على IDE.
الخطوة 4) استبدل الأمر chooseOkOnNextConfirmation بالأمر chooseCancelOnNextConfirmation، ثم أعد تشغيل البرنامج النصي. ستظهر الصفحة الآن الخيار المعاكس.
متعدد Windows
إذا نقرت على رابط يفتح نافذة منفصلة، فيجب عليك أولاً توجيه Selenium يتطلب استخدام بيئة التطوير المتكاملة (IDE) تحديد تلك النافذة قبل الوصول إلى العناصر الموجودة بداخلها. في بيئة التطوير المتكاملة القديمة، يتم استخدام عنوان النافذة كمحدد لموقعها.
نستخدم الأمر selectWindow للتبديل بين النوافذ.
سنستخدم الرابط http://jsbin.com/ocinaj/1، وعنوانه "النافذة الأولى". سيفتح رابط "هنا" الموجود في تلك الصفحة موقع فيسبوك في نافذة جديدة، وبعد ذلك سنوجه المستخدم إلى... Selenium IDE للقيام بما يلي:
- انقل التحكم من النافذة الأصلية إلى نافذة فيسبوك التي تم تشغيلها حديثًا باستخدام الأمر selectWindow مع عنوان النافذة كمحدد للموقع.
- تحقق من عنوان النافذة الجديدة.
- حدد النافذة الأصلية مرة أخرى باستخدام الأمر selectWindow مع تحديد "null" كهدف له.
- تحقق من عنوان النافذة المحددة حاليًا.
تُترجم الخطة المذكورة أعلاه إلى التسلسل المكون من أربع خطوات الموضح هنا.
الخطوة 1) تحديد الأساس URL إلى http://jsbin.com.
الخطوة 2) قم بإنشاء البرنامج النصي كما هو موضح أدناه.
نحتاج إلى أمر الإيقاف المؤقت لانتظار تحميل النافذة التي تم تشغيلها حديثًا قبل أن نتمكن من قراءة عنوانها.
الخطوة 3) تنفيذ البرنامج النصي. لاحظ أن حالة اختبار تم اجتياز الاختبار، مما يعني أننا تمكنا من التبديل بين النوافذ والتحقق من عناوينها بنجاح.
تذكر دائمًا أن تعيين هدف selectWindow إلى "null" يحدد تلقائيًا النافذة الأصلية - في هذه الحالة النافذة التي يوجد بها العنصر "link=here".
ملاحظة: غيّر فيسبوك عنوان صفحته منذ إنشاء هذا الشرح. عدّل العنوان المتوقع في البرنامج النصي وفقًا لذلك.
بلمسة عصرية Selenium مكافئات بيئات التطوير المتكاملة لهذه الأوامر
استخدم Firefoxتم إيقاف استخدام -plugin IDE عندما Firefox تم الانتقال إلى بنية WebExtensions، ومتصفح Chrome الحالي، Firefox وقد أعاد ملحق Edge تسمية معظم أوامر Selenese إلى صيغة مفصولة بمسافات. لم يتغير السلوك، لذا فإن الجدول أدناه هو كل ما تحتاجه لقراءة النصوص البرمجية المذكورة أعلاه على التثبيت الحالي.
| الأوامر القديمة في هذا البرنامج التعليمي | حالياًّ Selenium أمر بيئة التطوير المتكاملة |
|---|---|
| متجر | متجر |
| صدى | صدى |
| storeText | نص المخزن |
| storeElementPresent | قم بتخزين العنصر الموجود (أو تأكيد وجود العنصر) |
| assertAlert / verifyAlert | تأكيد التنبيه / التحقق من التنبيه |
| اختر موافق في التأكيد التالي | اختر "موافق" في التأكيد التالي |
| اختر إلغاء عند التأكيد التالي | اختر إلغاء في التأكيد التالي |
| selectWindow (title as target) | حدد النافذة ذات المقبض ${handle} |
هناك فرقان جديران بالذكر. فالمطالبات، التي لم تتناولها المقالة القديمة، أصبحت الآن تحتوي على أوامرها الخاصة: أجب على السؤال التالي يخطط للرد قبل ظهور الحوار، و يجيب برنامج تشغيل الويب على الموجه المرئي يكتب في موجه أوامر مفتوح بالفعل. ولم يعد تبديل النوافذ يعتمد على عنوان الصفحة. تشغيل مقبض نافذة المتجر لالتقاط مقبض أولاً، ثم تمريره handle=${yourHandle} لتحديد النافذة. هذا التغيير يزيل وضع الفشل الموصوف في الملاحظة أعلاه، حيث يقوم الموقع ببساطة بإعادة تسمية صفحته ويتوقف البرنامج النصي عن العثور على النافذة. الرسمي Selenium موقع مشروع بيئة التطوير المتكاملة يعرض قائمة كاملة بمجموعة الأوامر الحالية.













