مستودع الكائنات في Selenium

⚡ ملخص ذكي

مستودع الكائنات في Selenium يُركّز هذا الأسلوب مُحدِّدات العناصر في ملف خارجي واحد، مما يفصلها عن نصوص الاختبار. يُحسِّن هذا الأسلوب الصيانة ويُمكِّن المختبرين من تحديث المُحدِّدات في مكان واحد بدلاً من تعديل العديد من حالات الاختبار.

  • 🗂️ المبدأ الأساسي: يخزن محددات واجهة المستخدم كأزواج مفتاح-قيمة، ويتم الاحتفاظ بها منفصلة عن Selenium منطق اختبار WebDriver.
  • 📄 نهج ملف الخصائص: قم بتخزين محددات المواقع في ملف نصي .properties، تتم قراءته في وقت التشغيل عبر فئة java.util.Properties.
  • 🧩 نهج ملف XML: استخدم ملف XML مع نموذج كائن المستند و dom4j لقراءة محددات المواقع عبر selectSingleNode.
  • 🔧 مسار التنفيذ: قم بإنشاء الملف، وتخزين بيانات المفتاح والقيمة، وقراءة القيم في متغيرات، ثم مررها إلى findElement.
  • 🛡️ فائدة الصيانة: عند تغيير موقع العنصر، قم بتحديث ملف المستودع فقط، وليس كل حالة اختبار متأثرة.

مستودع الكائنات في Selenium

ما هو مستودع الكائنات؟

مستودع الكائنات هو موقع تخزين مشترك لجميع الكائنات. في Selenium في سياق WebDriver، ستكون الكائنات عادةً هي محددات المواقع المستخدمة لتحديد عناصر الويب بشكل فريد.

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

أنواع مستودعات الكائنات في Selenium سائق الويب

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

فيما يلي أنواع مستودعات الكائنات التي يمكن إنشاؤها في Selenium برنامج تشغيل الويب.

  1. مستودع الكائنات باستخدام ملف الخصائص
  2. مستودع الكائنات باستخدام ملف XML

Selenium مستودع كائنات برنامج تشغيل الويب باستخدام ملف الخصائص

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

الخطوة 1) إنشاء ملف خصائص في Eclipse

  1. للبدء، يجب إنشاء بنية مشروع جافا الموضحة أدناه في بيئة إكليبس. يمكن أن يكون اسم المشروع واسم الحزمة أي اسمين صالحين.

إنشاء ملف خصائص في Eclipse

  1. انقر بزر الماوس الأيمن على مجلد المشروع الرئيسي وحدد جديد -> أخرى

إنشاء ملف خصائص في Eclipse

  1. في النافذة التالية، حدد عام -> ملف، ثم انقر على زر "التالي".

إنشاء ملف خصائص في Eclipse

  1. أدخل اسم ملف صحيحًا بامتداد ".properties" في نافذة مورد الملف الجديد، ثم انقر على زر "إنهاء".

إنشاء ملف خصائص في Eclipse

  1. يجب عرض ملف باسم 'application.properties' في هيكل المشروع

إنشاء ملف خصائص في Eclipse

الخطوة 2) تخزين البيانات في ملف الخصائص

  1. يتم تخزين البيانات في ملف خصائص على شكل أزواج مفتاح-قيمة، حيث يكون المفتاح فريدًا في جميع أنحاء الملف.
  2. سنحاول استخدام ملف الخصائص لتحديد عناصر الويب باستخدام قيم المحددات.
  3. افتح ملف application.properties في Eclipse وتخزين البيانات التالية
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

تخزين البيانات في ملف الخصائص

4) لهذا البرنامج التعليمي، يتم استخدام موقع الويب التجريبي التالي:

https://demo.guru99.com/test/guru99home/إليكم سيناريو الاختبار:

  • انقر على رابط اختبار الهاتف المحمول باستخدام XPATH
  • العودة
  • أدخل البيانات في مربع نص البريد الإلكتروني باستخدام المعرف
  • انقر على زر التسجيل باستخدام الهوية

الخطوة 3) قراءة البيانات من ملف الخصائص

  1. يمكن قراءة البيانات من ملف الخصائص باستخدام فئة الخصائص المضمنة المتوفرة في حزمة java.util.
  2. في البداية، يجب إنشاء كائن من فئة الخصائص كما يلي
  Properties obj = new Properties();
  1. نحتاج إلى إنشاء كائن من فئة FileInputStream مع مسار ملف الخصائص
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. يمكن قراءة البيانات من ملف الخصائص باستخدام دالة التحميل (load) التي توفرها فئة الخصائص (Properties) في لغة جافا. يوضح الكود التالي كيفية استخدام دالة التحميل.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

ستحتوي السلسلة "mobileTesting" على XPATH لتحديد رابط اختبار الهاتف المحمول داخل صفحة الويب.

الخطوة 4) استخدام ملف الخصائص في البرامج النصية للاختبار

يمكن استخدام ملف الخصائص في نصوص الاختبار عن طريق قراءة البيانات منه وتمريرها كمعامل إلى دالة `findElement`. يوضح الكود أدناه كيفية استخدام البيانات المقروءة من ملف الخصائص في نصوص الاختبار.

driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click();
driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();

فيما يلي الكود الكامل المستخدم لسيناريو الاختبار أعلاه.

package com.objectrepository.demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class DemoOR {

    public static void main(String[] args) throws IOException {

        // Create WebDriver Instance
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/guru99home/");
        driver.manage().window().maximize();
        // Load the properties File
        Properties obj = new Properties();
        FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
        obj.load(objfile);
        // Navigate to link Mobile Testing and Back
        driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click();
        driver.navigate().back();
        // Enter Data into Form
        driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com");
        driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();
    }

}

Selenium مستودع كائنات WebDriver باستخدام ملف XML

لغة XML هي اختصار لـ Extensible Markup Language (لغة الترميز القابلة للتوسيع). يستخدم ملف XML نموذج كائن المستند (DOM) كبنية أساسية. يُحاكي تنسيق ملف XML تنسيق HTML الذي تُبنى عليه صفحة الويب. فيما يلي قائمة بالمواضيع التي سيتم تغطيتها.

الخطوة 1) إنشاء ملف XML في Eclipse

  1. يجب إنشاء هيكل مشروع Java أدناه Eclipse.

إنشاء ملف XML في Eclipse

  1. انقر بزر الماوس الأيمن على مجلد المشروع، وحدد جديد -> أخرى

إنشاء ملف XML في Eclipse

  1. حدد ملف XML الموجود داخل مجلد XML وانقر على زر "التالي".

إنشاء ملف XML في Eclipse

  1. أدخل اسم ملف XML صحيحًا وانقر على زر "إنهاء".

إنشاء ملف XML في Eclipse

  1. سيتم إضافة ملف XML إلى مجلد المشروع كما هو موضح أدناه

إنشاء ملف XML في Eclipse

الخطوة 2) تخزين البيانات في ملف XML

يمكن تخزين البيانات في ملف XML بصيغة نموذج كائن المستند (DOM). ولتبسيط الأمر، يمكننا استخدام سيناريو الاختبار التالي كمثال.

  • انقر على رابط اختبار الهاتف المحمول باستخدام XPATH
  • العودة إلى الصفحة الرئيسية
  • أدخل البيانات في مربع نص البريد الإلكتروني باستخدام المعرف
  • انقر على زر التسجيل باستخدام الهوية

فيما يلي تنسيق ملف XML المطلوب استخدامه.

<menu>
      <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting>
      <email> philadelphia-field-email</email>
      <signup> philadelphia-field-submit </signup>
 </menu>

قم بتخزين كود XML أعلاه في property.xml

تخزين البيانات في ملف XML

في علامة تبويب التصميم سترى

تخزين البيانات في ملف XML

الخطوة 3) قراءة البيانات من ملف XML

١. يمكن قراءة البيانات من ملف XML باستخدام فئة 'dom4j' المدمجة في جافا. يُرجى ملاحظة أنه يجب إضافة ملفات JAR المذكورة أدناه إلى مسار بناء مشروعك قبل المتابعة في كتابة الكود.

  • jaxen.jar
  • dom4j-1.6.jar

2. فيما يلي الكود لقراءة البيانات من ملف XML.

        File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml");
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputFile);
        String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText();
        String emailTextBox = document.selectSingleNode("//menu/email").getText();
        String signUpButton = document.selectSingleNode("//menu/signup").getText();

3. في البداية، نحتاج إلى إنشاء كائن ملف وتمريره كمعامل إلى دالة "read" الخاصة بفئة SAXReader. بمجرد قراءة بيانات ملف XML بنجاح، يمكننا الوصول إلى عقد فردية من مستند XML باستخدام دالة "selectSingleNode".

الخطوة 4) استخدام ملف XML في البرامج النصية للاختبار

يمكن استخدام ملف XML في نصوص الاختبار عن طريق قراءة البيانات منه وتمريرها كمعامل إلى دالة findElement. يوضح الكود أدناه كيفية استخدام البيانات المقروءة من ملف XML في نصوص الاختبار.

driver.findElement(By.xpath(mobileTesting)).click();
driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(signUpButton)).click();

يوضح الكود أدناه استخدام ملف XML في Selenium WebDriver

package com.objectrepository.demo;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class DemoORXML {

    public static void main(String[] args) throws DocumentException {
        // Creating WebDriver Instance
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/guru99home/");
        driver.manage().window().maximize();
        // Reading XML File
        File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml");
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputFile);
        String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText();
        String emailTextBox = document.selectSingleNode("//menu/email").getText();
        String signUpButton = document.selectSingleNode("//menu/signup").getText();

        // Navigating to Mobile Testing and back
        driver.findElement(By.xpath(mobileTesting)).click();
        driver.navigate().back();
        // Entering Form Data
        driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
        driver.findElement(By.id(signUpButton)).click();

    }
}

قم بتنزيل برنامج تشغيل الويب Eclipse مشروع

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

لا يخزن مستودع الكائنات سوى محددات العناصر خارجيًا. أما نموذج كائن الصفحة فهو نمط أوسع يغلّف محددات العناصر وإجراءات الصفحة داخل فئات الصفحة.

نعم. يمكن أيضًا تخزين محددات المواقع في ملفات Excel أو CSV، وقراءتها باستخدام مكتبة مثل Apache POI وتمريرها إلى findElement.

استخدم مفاتيح واضحة وواضحة، وقم بتجميع محددات المواقع حسب الصفحة، وفضل استخدام محددات مواقع ثابتة مثل المعرف، وتجنب التكرارات. احتفظ بمستودع واحد لكل وحدة نمطية بحيث يؤدي تغيير محدد الموقع إلى تحديث إدخال واحد فقط.

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

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

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