Selenium الامتدادات الأساسية (User-Extensions.js)

⚡ ملخص ذكي

Selenium تضيف الإضافات الأساسية، والتي تسمى أيضًا إضافات المستخدم، إجراءات مخصصة، وأدوات وصول، واستراتيجيات تحديد المواقع إلى Selenium عن طريق ربط بيئة التطوير المتكاملة Javaوظائف البرمجة النصية لـ Selenium وكائنات النموذج الأولي لـ PageBot عند بدء تشغيل بيئة التطوير المتكاملة (IDE).

  • 🔘 ثلاثة أركان: كل أمر في لغة سيلينيز هو عبارة عن إجراء، أو أداة وصول أو تأكيد، أو استراتيجية تحديد موقع.
  • ☑️ قواعد التسمية: تبدأ الإجراءات بـ do، وتبدأ أدوات الوصول بـ get أو is، وتبدأ أدوات تحديد المواقع بـ locateElementBy.
  • ✅ أمر الانتظار المجاني: يؤدي تسجيل doTextUpperCase إلى قيام بيئة التطوير المتكاملة (IDE) بإنشاء textUpperCaseAndWait تلقائيًا.
  • 🧪 آلية التحميل: يقوم برنامج IDE بقراءة ملف user-extensions.js عند بدء التشغيل، لذلك يجب إعادة تشغيل الأداة بعد كل تعديل.
  • 🛠️ الوضع القديم: Selenium كور و Firefoxتم إيقاف استخدام بيئات التطوير المتكاملة (IDE) المزودة بملحقات، Selenium تم إسقاط دعم ملحقات المستخدم من ملفات JAR.
  • 📊 المسار الحديث: يعرض برنامج IDE الحالي الخاص بامتداد المتصفح بيانًا للمكون الإضافي وأمرًا لتنفيذ البرنامج النصي بدلاً من ذلك.

Selenium الإضافات الأساسية وملف user-extensions.js

Selenium الامتدادات الأساسية

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

  1. عمل: ما هي العملية التي تقوم بتنفيذها على شاشة واجهة المستخدم؟

    Selenium قائمة أوامر بيئة التطوير المتكاملة (IDE) التي تعرض أوامر الإجراءات مثل النقر والكتابة

  2. الوصول / التأكيد: ما هي عملية التحقق التي تقوم بها على البيانات التي تحصل عليها من واجهة المستخدم؟

    Selenium أوامر الوصول والتأكيد في بيئة التطوير المتكاملة (IDE) مسبوقة بـ get و is و verify و assert

  3. استراتيجية تحديد الموقع: كيفية العثور على العنصر في واجهة المستخدم.

    Selenium استراتيجيات تحديد موقع مربع الهدف في بيئة التطوير المتكاملة (IDE) مثل المعرف والاسم و CSS و XPath

Selenium يأتي برنامج IDE مزودًا بمكتبة ناضجة تحتوي بالفعل على الكثير من الإجراءات، وأدوات الوصول، والتأكيدات، واستراتيجيات تحديد المواقع.

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

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

⚠️ قبل أن تبدأ: ينتمي سير العمل الموصوف هنا إلى Selenium كور والأصلي Firefox-توصيل في Selenium IDE. Selenium تم إيقاف دعم Core، وتم إسقاط دعم إضافات المستخدم من Selenium برطمانات في Selenium 3. تم الحفاظ على الخطوات والتعليمات البرمجية أدناه لأن عددًا كبيرًا من مجموعات Selenese القديمة لا تزال تعتمد عليها؛ وسيتم وصف البديل الحديث لاحقًا في هذه المقالة.

متطلبات إنشاء Selenium إضافة المستخدم

لإنشاء ملحق مستخدم لـ Selenium بيئة التطوير المتكاملة (IDE)، أنت بحاجة إلى المفاهيم الأساسية لـ Javaسيناريو وعلى وجه الخصوص، Javaكائن النموذج الأولي للبرنامج النصي. يوضح الرسم التخطيطي أدناه كائنَي النموذج الأولي اللذين يرتبط بهما ملحق المستخدم.

رسم تخطيطي لـ Selenium كائنات النموذج الأولي ونموذج PageBot الأولي المستخدمة بواسطة ملحق المستخدم

لإنشاء ملحق المستخدم الخاص بك، اكتب Javaقم بكتابة طرق البرمجة النصية وأضفها إلى Selenium النموذج الأولي للكائن وإلى النموذج الأولي لكائن PageBot.

كيفية Selenium بيئة التطوير المتكاملة تتعرف على إضافة المستخدم

بعد إضافة ملحق المستخدم إلى Selenium بيئة التطوير المتكاملة (IDE) ويتم تشغيلها، كل وظيفة مسجلة عليها Javaتم تحميل نماذج البرامج النصية، و Selenium يتعرف برنامج IDE على كل أمر من خلال اسمه. ولهذا السبب، فإن بادئات التسمية في القسم التالي ليست خيارًا أسلوبيًا، بل هي الطريقة التي يصنف بها برنامج IDE الأمر الذي تقوم به.

كيفية إنشاء ملحق مستخدم

الخطوة 1) العمل – تبدأ جميع الإجراءات بـ doإذا كان الإجراء يحول النص إلى أحرف كبيرة، فسيكون اسمه doTextUpperCaseعند إضافة طريقة الإجراء هذه إلى Selenium تقوم بيئة التطوير المتكاملة (IDE) نفسها بإنشاء طريقة انتظار مطابقة، لذلك doTextUpperCase كما ينتج وظيفة الانتظار textUpperCaseAndWaitيمكن للطريقة أن تقبل معلَمين.

مثال: إجراء نص بأحرف كبيرة

Selenium.prototype.doTextUpperCase = function(locator, text) {
// Here findElement is itself capable to handle all type of locator(xpath,css,name,id,className), We just need to pass the locator text
var element = this.page().findElement(locator);

// Create the text to type
text = text.toUpperCase();

// Replace the element text with the new text
this.page().replaceText(element, text);
};

الخطوة الثانية) الوصول / التأكيد – جميع المستخدمين المسجلين في Selenium تُسبق نماذج الكائنات بـ دولار فقط واحصل على خصم XNUMX% على جميع or isعلى سبيل المثال، getValueFromCompoundTable أو isValueFromCompoundTable. يمكن لدالة الوصول قبول مُعاملين، أحدهما للهدف والآخر لحقل القيمة في حالة الاختبار. تُظهر لقطة الشاشة أدناه كيف تظهر هذه البادئات بعد تحميل الامتداد.

Selenium بيئة تطوير متكاملة تعرض أوامر الوصول get و is المُولَّدة من إضافة مستخدم

لكل مستخدم، Selenium تقوم بيئة التطوير المتكاملة (IDE) بإنشاء وظائف التحقق المقابلة مسبوقة بـ تحقق من و يجزمبالإضافة إلى دالة انتظار مسبوقة بـ انتظر.

مثال: لأدوات الوصول إلى النصوص ذات الأحرف الكبيرة

Selenium.prototype.assertTextUpperCase = function(locator, text) {
// All locator-strategies are automatically handled by "findElement"
var element = this.page().findElement(locator);

// Create the text to verify
text = text.toUpperCase();

// Get the actual element value
var actualValue = element.value;

// Make sure the actual value matches the expected
Assert.matches(expectedValue, actualValue);
};

Selenium.prototype.isTextEqual = function(locator, text) {
return this.getText(locator).value===text;
};

Selenium.prototype.getTextValue = function(locator, text) {
return this.getText(locator).value;
};

الخطوة 3) استراتيجية تحديد الموقع – إذا كنت ترغب في إنشاء دالة خاصة بك لتحديد موقع عنصر، فقم بتوسيع نموذج PageBot الأولي بدالة مسبوقة بـ تحديد موقع العنصر بواسطةيأخذ هذا الأمر معلَمين: سلسلة تحديد الموقع، والمستند الذي يجب البحث فيه عن العنصر.

مثال: لمحدد موقع النص بالأحرف الكبيرة

// The "inDocument" is a document you are searching.
PageBot.prototype.locateElementByUpperCase = function(text, inDocument) {
// Create the text to search for
var expectedValue = text.toUpperCase();

// Loop through all elements, looking for ones that have
// a value === our expected value
var allElements = inDocument.getElementsByTagName("*");
// This star '*' is a kind of regular expression it will go through every element (in HTML DOM every element surely have a tag name like<body>,<a>,<h1>,<table>,<tr>,<td> etc. ). Here our motive is to find an element which matched with the Upper Case text we have passed so we will search it with all elements and when we get match we will have the correct web element.
for (var i = 0; i < allElements.length; i++) {
var testElement = allElements[i];
if (testElement.innerHTML && testElement.innerHTML === expectedValue) {
return testElement;
}
}
return null;
};

احفظ جميع الوظائف الثلاث في ملف واحد باسم ملف user-extensions.jsالملف عادي Javaالنص البرمجي، لذا فإن أي محرر نصوص كافٍ.

كيفية استخدام الامتداد الأساسي الذي تم إنشاؤه حديثًا

تحميل الملف مهمة من أربع خطوات في النسخة الأصلية Firefox-plugin IDE. كل لقطة شاشة أدناه تتوافق مع الخطوة المرقمة بجانبها.

  1. انتقل إلى البرنامج المساعد في التأليف Selenium بيئة التطوير المتكاملة (IDE) وانقر خيارات -> خيارات…

    Selenium تم فتح قائمة خيارات بيئة التطوير المتكاملة للوصول إلى مربع حوار الخيارات

  2. في خانة رمز الخصم، أدخل TABBYDAY. General القسم، حدد موقع الملف الذي تم إنشاؤه حديثًا Selenium امتداد أساسي.

    Selenium مربع حوار خيارات بيئة التطوير المتكاملة (IDE) - علامة التبويب "عام" مع Selenium حقل مسار ملف ملحقات النظام الأساسي

  3. انقر OK وإعادة التشغيل Selenium IDE

    تظهر رسالة تأكيد عند Selenium تتم إعادة تشغيل بيئة التطوير المتكاملة لتحميل ملف الامتداد

  4. ستجد الامتداد في قائمة الأوامر.

    Selenium قائمة أوامر IDE المنسدلة التي تعرض أمر textUpperCase الجديد من ملف user-extensions.js

Selenium الإضافات الأساسية مقابل Selenium إضافات بيئة التطوير المتكاملة

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

البعد Selenium التمديد الأساسي Selenium إضافة بيئة التطوير المتكاملة (IDE)
ما يمتد إليه مكتبة أوامر اللغة السيلينية المستخدمة أثناء التشغيل تطبيق بيئة التطوير المتكاملة نفسه
تم تحميل الملف ملف user-extensions.js ملف user-extensions-ide.js في بيئة التطوير المتكاملة القديمة، وبيان المكونات الإضافية في بيئة التطوير المتكاملة الحالية
الاستخدام النموذجي إجراءات جديدة، وأدوات وصول، واستراتيجيات تحديد المواقع عناصر قائمة جديدة، ولوحات، وتنسيقات، وسلوك مسجل البيانات
الأشياء التي تم لمسها Selenium.prototype و PageBot.prototype واجهات برمجة تطبيقات محرر ومسجل بيئة التطوير المتكاملة
يركض خلال تنفيذ الاختبار التأليف والتسجيل

باختصار، يقوم ملحق Core بتغيير ما يمكن أن يفعله الاختبار، بينما يقوم ملحق IDE بتغيير ما يمكن أن تفعله الأداة.

كيف العصر الحديث Selenium بيئة التطوير المتكاملة تستبدل ملف user-extensions.js

استخدم Firefox-توصيل في Selenium توقف برنامج IDE عن العمل عندما Firefox تم الانتقال إلى بنية WebExtensions، وأعيدت كتابة بيئة التطوير المتكاملة (IDE) لتصبح متوافقة مع متصفح Chrome. Firefox وإضافة متصفح إيدج. أدى هذا التعديل إلى إزالة حقل الخيارات الموضح أعلاه، لذا لا يوجد مكان للإشارة إلى ملف user-extensions.js. هناك بديلان مدعومان يغطيان نفس الغرض.

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

يتم تسجيل البيان عن طريق إرسال رسالة إلى ملحق بيئة التطوير المتكاملة، كما هو موضح في الموقع الرسمي Selenium توثيق إضافات بيئة التطوير المتكاملة.

browser.runtime.sendMessage(SIDE_ID, {
uri: "/register",
verb: "post",
payload: {
name: "Selenium IDE plugin",
version: "1.0.0",
commands: [
{ id: "textUpperCase", name: "text upper case" }
]
}
}).catch(console.error);

لا يزال نظام التسمية قائماً بعد عملية الترحيل: لا يزال يتم تعريف أمر الملحق مرة واحدة ثم إعادة استخدامه في كل اختبار، تماماً كما كان الحال مع ملحق Core.

الإضافات والملحقات الشائعة المستخدمة في Selenium IDE

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

الاسم الهدف
المفضلة لتمييز مجموعة اختبارات كمفضلة وتنفيذها بنقرة واحدة
فليكس بايلوت X للأتمتة القائمة على فليكس
فليكس مونكيوم للتسجيل والتشغيل المستند إلى Adobe Flex تجريب in Selenium IDE
ملف التسجيل لحفظ السجلات في ملف
التحكم في التدفق للتحكم في تدفق تنفيذ الاختبار
تسليط الضوء على العناصر لتسليط الضوء على عنصر تحكم الويب
الانتظار الضمني انتظار عنصر ما لفترة زمنية محددة
لقطة الشاشة عند الفشل التقط لقطة شاشة عند الفشل
نتائج الإختبار حفظ حالة اختبار النتيجة لمجموعة اختبار بنقرة واحدة

القديم Seleniumلم تعد صفحة التنزيل عالية الجودة التي كانت تستضيف هذه الملفات موجودة. يتم توزيع الإضافات الحالية وبيئة التطوير المتكاملة نفسها من... Selenium موقع مشروع بيئة التطوير المتكاملة ومن متصفح كروم، Firefox ومتاجر إضافات Edge.

تحميل Selenium الامتداد الأساسي المستخدم في هذا البرنامج التعليمي

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

الاسم المتعارف عليه هو user-extensions.js، بينما كانت الإضافات على مستوى بيئة التطوير المتكاملة (IDE) تستخدم user-extensions-ide.js. كانت بيئة التطوير المتكاملة القديمة تسمح لك بالإشارة إلى أي مسار، لذا كان الاسم مجرد اصطلاح وليس شرطًا إلزاميًا، ولكن احتفظping وهذا يجعل التعرف على الأجنحة المشتركة أسهل.

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

افتح وحدة تحكم المتصفح وأعد تشغيل بيئة التطوير المتكاملة، ثم راقب وجود أي خطأ في تحليل الملف. إضافة سطر console.log في بداية الملف يؤكد تحميله قبل البدء في تصحيح أخطاء الدوال الفردية.

تكتب فقط النسخة التي تبدأ بـ "do". Selenium يُنشئ لك مُحرر الواجهات البرمجية (IDE) صيغة AndWait، التي تُنفذ نفس العملية ثم تنتظر اكتمال تحميل الصفحة. استخدم صيغة AndWait عندما يُؤدي الإجراء إلى بدء عملية التنقل.

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

جزئيًا. يقوم مساعد الطيار بإعادة إنتاج Seleniumقد تُنشئ أنماط .prototype و PageBot.prototype دوال مساعدة لم تكن موجودة من قبل، لذا يُنصح بمراجعة كل استدعاء مُقترح مع مرجع أوامر Selenese قبل اعتماده.

نعم. الملف الذي لا يحتوي إلا على دالة locateElementBy في PageBot.prototype صالح. تصبح الاستراتيجية الجديدة متاحةً لكل أمر موجود، لذا يمكن لأوامر click وtype وassert استهداف العناصر من خلالها.

Selenium قبل RC ملف امتدادات المستخدم عبر مفتاح تبديل الخادم، لكن RC و Selenium تمت إزالة النواة في Selenium 3. لا يحتوي WebDriver على خطاف مكافئ، لذلك تتم كتابة نفس المنطق كطريقة مساعدة عادية في إطار الاختبار الخاص بك.

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