كيفية تحديد القيمة من القائمة المنسدلة في Selenium

⚡ ملخص ذكي

حدد القيمة من القائمة المنسدلة في Selenium يستخدم هذا النظام فئة Select المخصصة للتحكم في عناصر HTML SELECT. توفر هذه الفئة طرق selectByVisibleText و selectByValue و selectByIndex التي تختار الخيارات بدقة وتدعم القوائم المنسدلة متعددة الاختيارات.

  • 📦 استيراد الحزمة: قم بإحضار org.openqa.selenium.support.ui.Select وقم بتغليف عنصر الويب قبل استدعاء أي طريقة تحديد.
  • 🎯 اختر الطريقة المناسبة: اختر selectByVisibleText أو selectByValue أو selectByIndex بناءً على ما إذا كان نص العرض أو سمة القيمة أو الموضع هو الأكثر استقرارًا.
  • 🔁 التعامل مع القوائم المنسدلة متعددة الاختيارات: استخدم isMultiple لاكتشافها، وقم بإلغاء تحديد الكل أو إلغاء تحديد النص المرئي لمسح الخيارات السابقة.
  • ✅ تحقق من الاختيار: قم باستدعاء getFirstSelectedOption للتأكد من أن الاختبار قد غيّر حالة القائمة المنسدلة بالفعل.
  • 🤖 استخدم محددات المواقع التي تعمل بالذكاء الاصطناعي: تقوم محددات مواقع الذكاء الاصطناعي ذاتية الإصلاح بإصلاح مسارات XPath المعطوبة لعناصر التحديد بعد تغييرات واجهة المستخدم، مع الحفاظ علىping اختبارات القوائم المنسدلة مستقرة عبر الإصدارات.

حدد القيمة من القائمة المنسدلة في Selenium

ما هي فئة Select في Selenium?

استخدم حدد الفئات في Selenium فئة مساعد من org.openqa.selenium.support.ui حزمة تسمح لبرنامج WebDriver بالتفاعل مع HTML <select> العناصر. يعرض طرقًا لتحديد وإلغاء تحديد الخيارات عن طريق النص المرئي أو القيمة أو الفهرس، وللكشف عما إذا كانت القائمة المنسدلة تقبل تحديدات متعددة.

لأن Select هو منتظم Java الفئة، تقوم بإنشاء نسخة باستخدام new قم بتمرير الكلمة المفتاحية وقم بتمرير عنصر الويب الذي يشير إلى <select> علامة على الصفحة.

كيفية تحديد القائمة المنسدلة في Selenium

قبل التعامل مع قائمة منسدلة في Seleniumيلزم القيام بخطوتين:

  1. قم باستيراد الحزمة org.openqa.selenium.support.ui.Select.
  2. قم بإنشاء القائمة المنسدلة كـ Select الكائن في Selenium برنامج تشغيل الويب.

على سبيل المثال، افتح Mercury صفحة تسجيل الرحلات (https://demo.guru99.com/test/newtours/register.php) وحدد موقع القائمة المنسدلة "البلد".

حدد القائمة المنسدلة في Selenium

الخطوة 1) استيراد حزمة Select.

import org.openqa.selenium.support.ui.Select;

الخطوة 2) قم بتعريف عنصر القائمة المنسدلة كمثيل لفئة التحديد. في المثال أدناه، يُطلق على المثيل اسم drpCountry.

Select drpCountry = new Select(driver.findElement(By.name("country")));

الخطوة 3) ابدأ بالتحكم في القائمة المنسدلة. استخدم أي دالة من دوال التحديد لاختيار خيار. المثال أدناه يختار "أنتاركتيكا":

drpCountry.selectByVisibleText("ANTARCTICA");

حدد الأساليب في Selenium

توفر فئة Select عدة طرق للتفاعل مع خيارات القائمة المنسدلة. فيما يلي شرح لأكثر خمس طرق شيوعًا.

1) selectByVisibleText() و deselectByVisibleText()

  • يحدد أو يلغي تحديد الخيار الذي يتطابق نصه المعروض مع المعلمة.
  • المعلمة: النص الدقيق المعروض للخيار.

على سبيل المثال:

drpCountry.selectByVisibleText("ANTARCTICA");

2) selectByValue() و deselectByValue()

  • يحدد أو يلغي تحديد الخيار الذي value السمة تطابق المعامل.
  • لاحظ أن النص المعروض و value غالباً ما تكون السمات مختلفة، كما هو موضح أدناه.
  • المعلمة: الخيار value السمة.

تحديد القيمة وإلغاء تحديد القيمة

على سبيل المثال:

drpCountry.selectByValue("234");

3) selectByIndex() و deselectByIndex()

  • يحدد أو يلغي تحديد الخيار الموجود في الفهرس المحدد. تبدأ الفهارس من الصفر.
  • المعلمة: الفهرس الصحيح للخيار.

على سبيل المثال:

drpCountry.selectByIndex(0);

4) isMultiple()

  • سياسات الإرجاع والاستبدال TRUE إذا كانت القائمة المنسدلة تسمح بتحديد عدة عناصر في نفس الوقت، وإلا FALSE.
  • المعلمة: لا شيء.

على سبيل المثال:

if (drpCountry.isMultiple()) {
    // do something here
}

5) deselectAll()

  • يمسح هذا الخيار جميع الخيارات المحددة. يسري هذا الخيار فقط على القوائم المنسدلة متعددة الخيارات.
  • المعلمة: لا شيء.

على سبيل المثال:

drpCountry.deselectAll();

اكتملت Code من طرق التحديد في Selenium

ما يلي Java يوضح البرنامج فئة Select في كل من القوائم المنسدلة ذات الاختيار الفردي والقوائم المنسدلة متعددة الاختيارات.

package newpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.By;

public class accessDropDown {
    public static void main(String[] args) {
        System.setProperty("webdriver.gecko.driver", "C:\\geckodriver.exe");
        String baseURL = "https://demo.guru99.com/test/newtours/register.php";
        WebDriver driver = new FirefoxDriver();
        driver.get(baseURL);

        // Single-select drop-down
        Select drpCountry = new Select(driver.findElement(By.name("country")));
        drpCountry.selectByVisibleText("ANTARCTICA");

        // Multi-select drop-down
        driver.get("http://jsbin.com/osebed/2");
        Select fruits = new Select(driver.findElement(By.id("fruits")));
        fruits.selectByVisibleText("Banana");
        fruits.selectByIndex(1);
    }
}

تحديد العناصر في عنصر تحديد متعدد

استخدم selectByVisibleText() تعمل هذه الطريقة أيضًا مع القوائم المنسدلة متعددة الاختيارات. على سبيل المثال، استخدم https://jsbin.com/osebed/2 كقاعدة URL. يعرض قائمة منسدلة تقبل اختيارات متعددة في وقت واحد.

تحديد العناصر في عنصر تحديد متعدد

تحدد الشفرة أدناه الخيارين الأولين باستخدام selectByVisibleText():

تحديد العناصر في عنصر تحديد متعدد

جدول مرجعي للمنهج

يلخص هذا الجدول جميع طرق فئة Select المذكورة أعلاه لتسهيل البحث السريع.

أمر الوصف
selectByVisibleText() / deselectByVisibleText() يحدد أو يلغي تحديد خيار من خلال النص المعروض.
selectByValue() / deselectByValue() يحدد أو يلغي تحديد خيار من خلال value السمة.
selectByIndex() / deselectByIndex() يحدد أو يلغي تحديد خيار ما باستخدام فهرسه الذي يبدأ من الصفر.
متعدد () تُرجع القيمة TRUE إذا كانت القائمة المنسدلة تسمح بتحديدات متعددة، وإلا تُرجع القيمة FALSE.
الغاء تحديد الكل() إلغاء تحديد جميع الخيارات المحددة مسبقًا في قائمة منسدلة متعددة الخيارات.

للتحكم في القوائم المنسدلة، استورد org.openqa.selenium.support.ui.Select قم أولاً بتكوين الحزمة، ثم أنشئ مثيل Select واستدعِ أيًا من الطرق المذكورة أعلاه.

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

فئة Select هي Selenium أداة مساعدة لعناصر HTML SELECT. تقوم بتغليف عنصر ويب وتُتيح وظائف selectByVisibleText و selectByValue و selectByIndex و isMultiple و deselectAll لأتمتة القوائم المنسدلة بسلاسة.

يُفضّل استخدام selectByValue عندما تكون قيمة السمة ثابتة، لأنّ التسميات غالبًا ما تتغير حسب اللغة. استخدم selectByVisibleText عندما يكون النص مرجعيًا، وتجنّب selectByIndex عندما يكون ترتيب الخيارات قابلًا للتغيير.

لا تعمل فئة Select إلا مع عناصر HTML SELECT الحقيقية. إذا كان عنصر الويب عبارة عن div أو ul أو عنصر واجهة مستخدم مخصص مصمم ليبدو كقائمة منسدلة، فيجب عليك النقر على الخيارات من خلال WebElement.click() أو واجهة برمجة تطبيقات الإجراءات (Actions API) بدلاً من ذلك.

استدعِ الدالة getFirstSelectedOption() على عنصر Select وتحقق من قيمة getText() الخاصة به. بالنسبة للقوائم المنسدلة متعددة الاختيارات، كرر الدالة getAllSelectedOptions() وقارن القائمة المُعادة مع الاختيارات المتوقعة.

نعم. استخدم الدالة isMultiple() للتأكد من أن القائمة المنسدلة تسمح بقيم متعددة، ثم استدعِ الدالة selectByVisibleText عدة مرات أو الدالة deselectAll() لإعادة التعيين. تتطلب القوائم المنسدلة متعددة الاختيارات تعريف السمة multiple في عنصر HTML SELECT.

استخدم WebDriverWait مع ExpectedConditions.numberOfElementsToBeMoreThan في مُحدِّد الخيارات. هذا يضمن جاهزية القوائم المنسدلة التي يتم ملؤها بشكل غير متزامن قبل إنشاء مثيل لفئة Select واستدعاء أي دالة اختيار.

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

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

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