Selenium برنامج تعليمي للغة C#: إطار عمل NUnit مع مثال

⚡ ملخص ذكي

Selenium يقوم WebDriver بتشغيل المتصفحات من C# من خلال واجهة IWebDriver، بينما يوفر NUnit سمات الاختبار والتأكيدات وتقارير Test Explorer التي تحول خطوات المتصفح هذه إلى اختبارات آلية قابلة للتكرار.

  • 🔘 سلسلة الأدوات: Visual Studio بالإضافة إلى Selenium WebDriver وNUnit وNUnit Test Adapter NuGet الحزم.
  • ☑️ إعداد مشروع: يجب أن يكون نوع الإخراج مكتبة فئات، وليس تطبيق وحدة تحكم، وإلا سيفشل البناء.
  • ✅ سمات NUnit: يقوم برنامج الإعداد بفتح المتصفح، ويقوم برنامج الاختبار بتنفيذ الإجراءات، ويقوم برنامج الإيقاف بإغلاقه.
  • 🧪 مجموعات القيادة: أوامر المتصفح، وأوامر WebElement، وأوامر القائمة المنسدلة عبر SelectElement.
  • 🛠️ المواقع: تقبل دالة FindElement استراتيجيات XPath و CSS لتحديد كل عنصر من عناصر التفاعل.
  • ⚡ التنفيذ: يقوم برنامج Test Explorer بتشغيل الفصل الدراسي والإبلاغ عن كل نتيجة على أنها ناجحة أو فاشلة.

Selenium أتمتة C# باستخدام إطار اختبار NUnit

Selenium نظرة عامة

Selenium هو مفتوح المصدر، على شبكة الإنترنت اختبار الأتمتة أداة تدعم متصفحات متعددة وأنظمة تشغيل متعددة. وهي تسمح للمختبرين باستخدام لغات برمجة متعددة مثل Java، C #، Pythonتُستخدم لغات البرمجة Ruby وPHP وPerl لكتابة اختبارات مؤتمتة. إذا كنت جديدًا على هذه الأداة، فابدأ بـ Selenium البرنامج التعليمي و مبادئ السلوك مقارنة بين WebDriver Selenium مقارنة RC.

Selenium يوفر عنصر التحكم في المتصفح؛ واللغة التي تستخدمها لتشغيله توفر البنية.

نظرة عامة على لغة C#

C# هي لغة برمجة موجهة للكائنات مشتقة من C++ و Javaتتيح لغة C# للمطورين إنشاء تطبيقات باستخدام Visual Studio على منصة .NET. فيما يلي الميزات الرئيسية لـ C#.

  1. وهي لغة برمجة كائنية التوجه
  2. يدعم تطوير تطبيقات لوحة التحكم والويندوز والويب
  3. ويوفر ميزات مثل التغليف والميراث وتعدد الأشكال.

قبل التوصيل Selenium في هذا السياق، يساعد ذلك على التعرف على شكل برنامج C# عادي.

بناء الجملة الأساسي لـ C#

يجب أن يحتوي البرنامج المكتوب بلغة C# على الأقسام التالية

  1. إعلان مساحة الاسم
  2. الحصص
  3. سمات الطبقة والأساليب
  4. الطريقة الرئيسية
  5. تصريحات البرنامج

مثال-

يوجد أدناه عينة Selenium مثال لبرنامج مكتوب بلغة C# لطباعة النص 'Guru99' على وحدة التحكم بالنظام.

using System;
namespace FirstProgram {
class DemoPrint {
static void main(){
    Console.WriteLine("Guru99");
	}
  }
}

التفسير:

  • مساحة الاسم في ما سبق Selenium مثال C# عبارة عن مجموعة من الفئات المتعددة. يجب الإعلان عن كل مساحة اسم باستخدام الكلمة الأساسية "باستخدام".
  • يتضمن البيان الأول من الكود مساحة الاسم "النظام" في برنامجنا. تحدد مساحة اسم النظام الفئات والأحداث الأساسية المستخدمة في C#. تعتمد مساحة الاسم المستخدمة على متطلبات البرنامج.
  • البيان الثاني يعلن عن مساحة الاسم "FirstProgram" للفئة "DemoPrint". يمكن أن يحتوي ملف AC# على فئات متعددة ضمن نفس مساحة الاسم.
  • يتضمن البيان الثالث إعلان الفصل. قد تحتوي الفئة على سمات متعددة وطرق متعددة.
  • يتضمن البيان الرابع إعلانًا للطريقة الرئيسية. الطريقة الرئيسية هي نقطة الدخول للتنفيذ لكل فئة.
  • العبارة الأخيرة هي صيغة لغة C# المستخدمة لطباعة عبارة على وحدة التحكم. WriteLine هي إحدى طرق... Console فئة. لاحظ أن نقطة الدخول مكتوبة هكذا Main بحرف M كبير في لغة C# الحقيقية؛ وحرف M صغير main لن يتم التعرف على المثال أعلاه كنقطة دخول.

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

Selenium مع إعداد C#

كيفية إعداد Visual Studio باستخدام Selenium برنامج تشغيل الويب:

الآن في هذا Selenium دروس C#، دعنا نتعلم العملية خطوة بخطوة لإعداد Visual Studio مع Selenium برنامج تشغيل الويب:

Visual Studio عبارة عن بيئة تطوير متكاملة (IDE) يستخدمها المطورون لبناء تطبيقات عبر منصات متعددة مثل Windows, Androidوالتطبيقات المستندة إلى iOS والتطبيقات السحابية.

الخطوة 1) انتقل إلى URL

https://visualstudio.microsoft.com/downloads/ وانقر فوق "تنزيل مجاني" الزر المعروض في علامة التبويب مجتمع Visual Studio

صفحة تنزيلات Visual Studio مع زر التنزيل المجاني لإصدار Community

الخطوة 2) افتح الملف الذي تم تنزيله. انقر فوق "نعم" إذا طُلب منك حقوق المسؤول.

يطلب برنامج تثبيت Visual Studio صلاحيات المسؤول

الخطوة 3) ستظهر النافذة المنبثقة أدناه. انقر على زر "متابعة".

تظهر نافذة ترحيبية من برنامج تثبيت Visual Studio مع زر "متابعة".

سيتم تنزيل الملفات كما هو موضح في النافذة المنبثقة أدناه.

يقوم برنامج تثبيت Visual Studio بتنزيل ملفات المكونات

الخطوة 4) في الشاشة التالية ،

حدد مربعات الاختيار لـ

  • يونيفرسال Windows تطوير المنصة
  • تطوير سطح مكتب .NET

انقر فوق "تثبيت".

شاشة عمل Visual Studio مع Universal Windows تم تحديد خيار تطوير تطبيقات سطح المكتب باستخدام المنصة و.NET

انتظر حتى يكتمل تثبيت كل مكون. يبلغ حجم الملفات 16 جيجابايت وستستغرق بعض الوقت.

شريط تقدم برنامج تثبيت Visual Studio لكل مكون محدد

الخطوة 5) ستظهر النافذة المنبثقة أدناه. انقر فوق زر "إعادة التشغيل".

يطلب برنامج تثبيت Visual Studio إعادة تشغيل الجهاز

الخطوة 6) بمجرد إعادة تشغيل الجهاز، ابحث عن "Visual Studio" في قائمة "ابدأ" وانقر على نتيجة البحث. ستظهر النافذة المنبثقة التالية. انقر على رابط "ليس الآن، ربما لاحقًا" إذا لم يكن لديك حساب موجود.

نافذة تسجيل الدخول إلى Visual Studio مع رابط "ليس الآن، ربما لاحقًا"

الخطوة 7) في الشاشة التالية ،

  • حدد موضوع اللون الذي تفضله
  • انقر على زر "بدء تشغيل Visual Studio"

شاشة التشغيل الأولى لبرنامج Visual Studio لاختيار سمة الألوان

الخطوة 8) ستظهر شاشة "البدء" في Visual Studio.

شاشة بدء استخدام Visual Studio بعد اكتمال التثبيت

إنشاء مشروع جديد في Visual Studio:

الخطوة 1) في القائمة ملف، انقر فوق جديد > المشروع

قائمة ملف في Visual Studio مع تحديد "جديد" و"مشروع".

الخطوة 2) في الشاشة التالية ،

  1. حدد الخيار "Visual C#"
  2. انقر فوق تطبيق وحدة التحكم (.Net Framework)
  3. أدخل الاسم كـ "Guru99 "
  4. انقر OK

مربع حوار مشروع جديد مع تطبيق وحدة تحكم Visual C# والمشروع المسمى Guru99

الخطوة 3) سيتم عرض الشاشة أدناه بمجرد إنشاء المشروع بنجاح.

محرر Visual Studio يعرض ما تم إنشاؤه حديثًا Guruمشروع وحدة التحكم 99

إعداد Visual Studio باستخدام Selenium برنامج تشغيل الويب:

الخطوة 1) انتقل إلى الأدوات -> NuGet مدير الحزم -> إدارة NuGet حزم للحل

مسار قائمة الأدوات إلى NuGet مدير الحزم وإدارة NuGet حزم للحل

الخطوة 2) في الشاشة التالية

  1. البحث عن Selenium على الشاشة الناتجة
  2. حدد نتيجة البحث الأولى
  3. حدد مربع الاختيار الخاص بالمشروع
  4. انقر فوق "تثبيت"

NuGet مدير الحزم مع Selenium تم تحديد خانة اختيار نتائج البحث والمشروع

الخطوة 3) انقر على زر "موافق" في الشاشة المنبثقة

NuGet تظهر نافذة تأكيد قبل Selenium تم تثبيت الحزمة

الخطوة 4) سيتم عرض الرسالة أدناه بمجرد تثبيت الحزمة بنجاح.

NuGet تم تأكيد المخرجات Selenium تم تثبيت WebDriver بنجاح

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

إطار عمل NUnit: نظرة عامة

NUnit هو وحدة التجارب الإطار الذي يدعمه Visual Studio و Selenium WebDriver. يُعد NUnit إطار عمل اختبار الوحدات الأكثر استخدامًا لتطبيقات .NET. يعرض NUnit نتائج الاختبار بتنسيق سهل القراءة، ويتيح للمختبِر تصحيح أخطاء الاختبارات الآلية.

نحتاج إلى تثبيت إطار عمل NUnit ومحول اختبار NUnit على Visual Studio لاستخدامه.

خطوات تثبيت NUnit Framework

الآن في هذا Selenium باستخدام البرنامج التعليمي C#، دعنا نتعلم عملية تثبيت إطار عمل NUnit:

الخطوة 1) انتقل إلى الأدوات -> NuGet مدير الحزم -> إدارة NuGet حزم للحل

أُعيد فتح قائمة الأدوات في NuGet مدير الحزم لتثبيت NUnit

الخطوة 2) في النافذة التالية

  1. ابحث عن NUnit
  2. حدد نتيجة البحث
  3. حدد المشروع
  4. انقر على تثبيت

NuGet مدير الحزم مع تحديد نتيجة بحث NUnit للتثبيت

الخطوة 3) ستظهر النافذة المنبثقة أدناه. انقر على زر "موافق".

NuGet تظهر نافذة تأكيد قبل تثبيت إطار عمل NUnit

الخطوة 4) ستظهر الرسالة أدناه بمجرد اكتمال التثبيت.

NuGet رسالة تؤكد اكتمال تثبيت إطار عمل NUnit

خطوات تنزيل محول اختبار NUnit

الآن في هذا البرنامج التعليمي لـ NUnit، سنغطي خطوات تنزيل NUnit Test Adaptor:

يرجى ملاحظة أن الخطوات التالية لا تنطبق إلا على الأجهزة ذات 32 بت. أما بالنسبة للأجهزة ذات 64 بت، فيتعين عليك تنزيل "محول اختبار NUnit3" باتباع نفس العملية المذكورة أدناه.

الباقات الحالية: مشروع حديث يقوم بالتركيب محول اختبار NUnit3 مع Microsoft.NET.Test.Sdkوالأقدم محول اختبار NUnit لم تعد الحزمة مدعومة. في .NET (Core)، يمكن إنشاء هيكل المشروع بالكامل باستخدام dotnet new nunit، والذي يضيف جميع الحزم الثلاث نيابةً عنك.

الخطوة 1) انتقل إلى الأدوات ->NuGet مدير الحزم -> إدارة NuGet حزم للحل. في تلك الشاشة،

  1. ابحث في NUnitTestAdapter
  2. انقر فوق نتيجة البحث
  3. حدد المشروع
  4. انقر على تثبيت

NuGet مدير الحزم يبحث عن NUnitTestAdapter مع تحديد المشروع

الخطوة 2) انقر فوق "موافق" في النافذة المنبثقة للتأكيد. بمجرد الانتهاء من التثبيت، سترى الرسالة التالية:

NuGet رسالة تؤكد اكتمال تثبيت محول اختبار NUnit

تم تثبيت كلا الجزأين، لذا فإن الخطوة التالية هي دمجهما في فئة اختبار واحدة.

Selenium وإطار عمل NUnit

يتيح دمج Selenium مع إطار عمل NUnit للمختبر التمييز بين فئات الاختبار المختلفة. كما يسمح NUnit للمختبرين باستخدام التعليقات التوضيحية مثل SetUp وTest وTearDown لأداء الإجراءات قبل وبعد تشغيل الاختبار.

يمكن دمج إطار عمل NUnit مع Selenium عن طريق إنشاء فئة اختبار NUnit وتشغيل فئة الاختبار باستخدام إطار عمل NUnit. Java يتم تغطية ما يعادل هذا النمط في JUnit برنامج تعليمي لإطار العملويتم مناقشة بديل NUnit في بيئة .NET داخل Visual Studio إلى جانب ذلك TestNG لـ Selenium.

أدناه الخطوات في هذا Selenium هناك حاجة إلى برنامج تعليمي لإطار عمل C# لإنشاء فئة اختبار وتشغيلها باستخدام إطار عمل NUnit.

خطوات إنشاء فئة اختبار NUnit في Selenium:

الخطوة 1) في مستكشف الحلول، انقر بزر الماوس الأيمن على المشروع > إضافة > فئة

قائمة السياق في مستكشف الحلول مع تحديد "إضافة" و"فئة".

الخطوة 2) ستظهر نافذة إنشاء الفصل.

  1. توفير اسم للفئة
  2. انقر على زر إضافة

مربع حوار "إضافة عنصر جديد" يُستخدم لتسمية فئة اختبار NUnit الجديدة

الخطوة 3) سوف تظهر الشاشة أدناه.

تم إنشاء ملف فئة C# فارغ في محرر Visual Studio

الخطوة 4) أضف الكود التالي إلى الفئة التي أنشأتها. يُرجى ملاحظة أنه يجب عليك تحديد موقع ملف 'chromedriver.exe' أثناء تهيئة برنامج تشغيل Chrome. Selenium 4.6 والإصدارات الأحدث Selenium كلمة المديروالذي يقوم بحل مشكلة برنامج التشغيل المطابق تلقائيًا، لذلك new ChromeDriver() النموذج الحالي هو بدون وسيطة مسار — تم الاحتفاظ بالمسار أدناه لأنه يطابق لقطات الشاشة.

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Guru99Demo
{
	class Guru99Demo						
    {
        IWebDriver driver;

        [SetUp]
		public void startBrowser()
        {
            driver = new ChromeDriver("D:\\3rdparty\\chrome");
        }

        [Test]
		public void test()
        {
            driver.Url = "http://www.google.co.in";
        }

        [TearDown]
		public void closeBrowser()
        {
            driver.Close();
        }

    }
}

الخطوة 4) انقر فوق "إنشاء" -> "إنشاء الحل"

قائمة "إنشاء" مع تحديد "إنشاء الحل" في Visual Studio

NOTE: قد تحصل على خطأ مثل "لا يحتوي على طريقة "رئيسية" ثابتة مناسبة لنقطة دخول" عند الإنشاء

خطأ في عملية البناء يُشير إلى عدم وجود دالة رئيسية ثابتة مناسبة كنقطة دخول

لحل هذه المشكلة، انتقل إلى المشروع > الخصائص وقم بتغيير نوع الإخراج إلى "مكتبة الفئات". الإعداد الافتراضي هو "تطبيق وحدة التحكم".

خصائص المشروع مع نوع الإخراج الذي تم تغييره إلى مكتبة الفئات

الخطوة 5) بمجرد نجاح البناء، نحتاج إلى فتح نافذة Test Explorer. انقر فوق اختبار -> Windows -> اختبار المستكشف

مسار قائمة الاختبار إلى Windows ومستكشف الاختبارات

الخطوة 6) يتم فتح نافذة Test Explorer مع قائمة الاختبارات المتاحة. انقر بزر الماوس الأيمن على Test Explorer وحدد Run Selected Tests

مستكشف الاختبارات يعرض قائمة الاختبارات المتاحة مع خيار "تشغيل الاختبارات المحددة".

الخطوة 7) Selenium يجب فتح المتصفح باستخدام الإعدادات المحددة URL ثم أغلق المتصفح. ستتغير حالة حالة الاختبار إلى "ناجح" في نافذة مستكشف الاختبار.

يعرض مستكشف الاختبارات نتيجة اختبار NUnit التي تم وضع علامة "ناجح" عليها.

يُثبت اجتياز الاختبار أن نظام السباكة يعمل بشكل صحيح. فيما يلي المصطلحات التي ستستخدمها فعليًا في كتابة الاختبارات.

Selenium أوامر WebDriver في C#

تستخدم لغة C# الواجهة "IWebDriver" للتفاعل مع المتصفح. فيما يلي فئات الأوامر المتاحة مع Selenium في C #.

  1. أوامر المتصفح
  2. أوامر عنصر الويب
  3. أوامر المنسدلة

الآن في هذا Selenium درس تعليمي للغة C#، دعونا ندرس Selenium أوامر WebDriver واحدة تلو الأخرى. Java يتم توضيح النظراء في هذا أول شخصية WebDriver تجول.

الأوامر أدناه لا تزال سارية المفعول IWebDriver السطح في Selenium 4، لذا فإن الصيغة تنتقل دون تغيير.

أوامر المتصفح:

فيما يلي قائمة بأوامر المتصفح المتوفرة في C# مع Selenium.

اسم الأمر الوصف بناء الجملة
أمر URL يُستخدم هذا الأمر لفتح ملف محدد URL في المتصفح.
driver.Url = "https://www.guru99.com"
أمر العنوان يُستخدم هذا الأمر لاسترداد عنوان الصفحة لصفحة الويب المفتوحة حاليًا
String title = driver.Title
أمر مصدر الصفحة يُستخدم هذا الأمر لاسترداد الكود المصدري لصفحة الويب المفتوحة حاليًا.
String pageSource = driver.PageSource
إغلاق الأمر يُستخدم هذا الأمر لإغلاق مثيل المتصفح الذي تم فتحه مؤخرًا.
driver.Close();
قم بإنهاء الأمر يُستخدم هذا الأمر لإغلاق جميع مثيلات المتصفح المفتوحة
driver.Quit();
الأمر الخلفي يتم استخدام هذا الأمر للانتقال إلى الصفحة السابقة لسجل المتصفح.
driver.Navigate().Back();
القيادة إلى الأمام يُستخدم هذا الأمر للانتقال إلى الصفحة التالية من سجل المتصفح.
driver.Navigate().Forward()
تحديث الأمر يُستخدم هذا الأمر لتحديث المتصفح.
driver.Navigate().Refresh()

تعمل أوامر المتصفح على النافذة؛ أما المجموعة التالية فتعمل على ما بداخلها.

أوامر عناصر الويب

يمثل عنصر الويب أي عنصر على صفحة الويب. ويتم تمثيلها بواسطة وسوم HTML. الأزرار، ومربعات النصوص، والروابط، والصور، والجداول، والإطارات كلها عناصر ويب. Operaيتم تفعيل العمليات على تلك العناصر من خلال IWebElement واجهة. للتفاعل مع عنصر ويب، نقوم أولاً ابحث عن العنصر على الصفحة، ثم قم بإجراء عملية عليها. الاستراتيجيات المتاحة مُغطاة في محددات المواقع في Seleniumيمكن استخدام أدوات مطوري المتصفح - أو إضافات Firebug وFirepath القديمة التي تسبقها لقطات الشاشة أدناه - لتحديد كسباث من عنصر ويب.

فيما يلي أوامر WebElement المتوفرة في لغة C#.

اسم الأمر الوصف بناء الجملة
انقر فوق الأمر يستخدم هذا الأمر للنقر على عنصر ويب. لكي يكون العنصر قابلاً للنقر، يجب أن يكون العنصر مرئيًا على صفحة الويب. يستخدم هذا الأمر أيضًا لعمليات مربع الاختيار وأزرار الاختيار.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));  element.Click();
أمر واضح يتم استخدام هذا الأمر خصيصًا لمسح محتويات مربعات النص الموجودة.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
element.Clear();
أمر إرسال المفاتيح يستخدم هذا الأمر لإدخال قيمة في مربعات النص. يجب تمرير القيمة المراد إدخالها كمعلمة إلى
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
element.SendKeys("guru99");
الأمر المعروض يستخدم هذا الأمر لتحديد ما إذا كان يتم عرض عنصر معين على صفحة الويب. يعيد هذا الأمر قيمة منطقية؛ true أو false حسب إمكانية رؤية عنصر الويب.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
Boolean status = element.Displayed;
أمر ممكّن يُستخدم هذا الأمر لتحديد ما إذا تم تمكين عنصر ويب معين على صفحة الويب. يقوم هذا الأمر بإرجاع قيمة منطقية؛ صحيحة أو خاطئة نتيجة لذلك.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
Boolean status = element.Enabled;
الأمر المحدد يُستخدم هذا الأمر لتحديد ما إذا كان عنصر ويب معين مُحددًا. ويُستخدم هذا الأمر مع مربعات الاختيار، وأزرار الاختيار، وعمليات التحديد.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
Boolean status = element.Selected;
إرسال الأمر: هذا الأمر مشابه لأمر النقر، والفرق يكمن في ما إذا كان نموذج HTML يحتوي على زر من النوع إرسال. بينما ينقر أمر النقر على أي زر، ينقر أمر الإرسال على الأزرار التي تحمل النوع إرسال فقط.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));  element.submit();
أمر نصي يقوم هذا الأمر بإرجاع النص الداخلي لعنصر Webelement. يقوم هذا الأمر بإرجاع قيمة سلسلة نتيجة لذلك.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
String text=element.Text;
أمر TagName يقوم هذا الأمر بإرجاع علامة HTML لعنصر الويب. تقوم بإرجاع قيمة سلسلة كنتيجة.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement"));  String tagName = element.TagName;
أمر GetCSSValue: تُستخدم هذه الطريقة لإرجاع لون عنصر الويب على شكل سلسلة rgba (الأحمر والأخضر والأزرق وألفا).
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
String color = element.getCSSValue;

الناتج- إذا كان لون العنصر أحمر، فسيكون الناتج rgba(255,0,0,1)

ملاحظة حول العينات أعلاه: يُعيد الجدول إنتاج الصيغة الأصلية. في الوضع الحالي Selenium في .NET، تُكتب أسماء الأعضاء بأحرف كبيرة وصغيرة (Pascal-case). element.Submit() و element.GetCssValue("color") - و GetCssValue يأخذ اسم خاصية CSS كوسيط.

أوامر القائمة المنسدلة:

يمكن تنفيذ عمليات القائمة المنسدلة في C# باستخدام فئة SelectElement.

فيما يلي عمليات القائمة المنسدلة المختلفة المتوفرة في C#.

اسم الأمر الوصف بناء الجملة
الأمر SelectByText يحدد هذا الأمر خيارًا من القائمة المنسدلة بناءً على نص الخيار.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
select.SelectByText("Guru99");
أمر SelectByIndex يتم استخدام هذا الأمر لتحديد خيار بناءً على فهرسه. يبدأ مؤشر القائمة المنسدلة عند 0.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
select.SelectByIndex("4");
الأمر SelectByValue يتم استخدام هذا الأمر لتحديد خيار بناءً على قيمة الخيار الخاصة به.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
select.SelectByValue("Guru99");
أمر الخيارات يتم استخدام هذا الأمر لاسترجاع قائمة الخيارات المعروضة في القائمة المنسدلة.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
List<IWebelement> options = select. Options;
int size = options.Count;
for(int i=0;i<options.size();i++)
{
String value = size.elementAt(i).Text;
Console.writeLine(value);
}

يطبع الكود أعلاه جميع الخيارات على وحدة التحكم ضمن القائمة المنسدلة.

أمر متعدد يُستخدم هذا الأمر لتحديد ما إذا كانت القائمة المنسدلة متعددة الخيارات؛ حيث تتيح القائمة المنسدلة متعددة الخيارات للمستخدم اختيار أكثر من خيار في الوقت نفسه. يُرجع هذا الأمر قيمة منطقية (Boolean).
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
Boolean status = select.IsMultiple();
الأمر ديسيلكتال يتم استخدام هذا الأمر في القوائم المنسدلة متعددة التحديد. يقوم بمسح الخيارات التي تم تحديدها بالفعل.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
select.DeSelectAll();
أمر دي سيليكت باي إندكس يقوم هذا الأمر بإلغاء تحديد القيمة المحددة بالفعل باستخدام الفهرس الخاص بها.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
select.DeSelectByIndex("4");
الأمر ديسيليكتبيفالو يقوم هذا الأمر بإلغاء تحديد قيمة محددة بالفعل باستخدام قيمتها.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
select.DeSelectByValue("Guru99");
الأمر ديسيليكتبيتيكست يقوم هذا الأمر بإلغاء تحديد القيمة المحددة بالفعل باستخدام النص الخاص بها.
IWebelement element = driver.FindElement(By.xpath("xpath of Webelement")); 
SelectElement select = new SelectElement(element);
select.DeSelectByText("Guru99");

تقوم البرامج النصية الأربعة أدناه بتنفيذ الأوامر المذكورة أعلاه ضد Guru99 موقعًا تجريبيًا. كل منها عبارة عن فئة اختبار NUnit كاملة وقابلة للتنفيذ.

Code عينات

مثال 1: انقر على الرابط باستخدام XPATH Locator:

سيناريو الاختبار:

  1. انتقل إلى العرض التوضيحي Guru99 صفحة ويب – https://demo.guru99.com/test/guru99home/
  2. تكبير النافذة
  3. انقر على قائمة "الاختبار".
  4. أغلق المتصفح
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Guru99Demo
{
	class CSS						
    {
        IWebDriver m_driver;

        [Test]
		public void cssDemo()
        {
            m_driver = new ChromeDriver("D:\\3rdparty\\chrome");
            m_driver.Url = "https://demo.guru99.com/test/guru99home/";
            m_driver.Manage().Window.Maximize();
            IWebelement link = m_driver.FindElement(By.XPath(".//*[@id='rt-header']//div[2]/div/ul/li[2]/a"));
            link.Click();
            m_driver.Close();
        }
    }
}

مثال 2: إدخال البيانات في النصBox وانقر على زر باستخدام محدد موقع XPATH:

سيناريو الاختبار:

  1. انتقل إلى Guruصفحة العرض التوضيحي 99 – https://demo.guru99.com/test/guru99home/
  2. أدخل البيانات في مربع نص البريد الإلكتروني
  3. انقر على زر التسجيل
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Guru99Demo
{
	class CSS						
    {
        IWebDriver m_driver;

        [Test]
		public void cssDemo()
        {
            m_driver = new ChromeDriver("G:\\");
            m_driver.Url = "https://demo.guru99.com/test/guru99home/";
            m_driver.Manage().Window.Maximize();

             
			// Store locator values of email text box and sign up button				
            IWebElement emailTextBox = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-email']"));
            IWebElement signUpButton = m_driver.FindElement(By.XPath(".//*[@id='philadelphia-field-submit']"));

            emailTextBox.SendKeys("test123@gmail.com");
            signUpButton.Click();
                        
        }
    }
}			

مثال 3: إدخال البيانات في النصBox وانقر على زر باستخدام محدد موقع CSS:

سيناريو الاختبار:

  1. انتقل إلى Guruصفحة العرض التوضيحي 99 – https://demo.guru99.com/test/guru99home/
  2. أدخل البيانات في مربع نص البريد الإلكتروني
  3. انقر على زر التسجيل
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Guru99Demo
{
	class CSS						
    {
        IWebDriver m_driver;

        [Test]
		public void cssDemo()
        {
            m_driver = new ChromeDriver("G:\\");
            m_driver.Url = "https://demo.guru99.com/test/guru99home/";
            m_driver.Manage().Window.Maximize();

             
			// Store locator values of email text box and sign up button				
            IWebElement emailTextBox = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-email]"));
            IWebElement signUpButton = m_driver.FindElement(By.CssSelector("input[id=philadelphia-field-submit]"));

            emailTextBox.SendKeys("test123@gmail.com");
            signUpButton.Click();

             
        }
    }
}

المثال 4: حدد قيمة في القائمة المنسدلة:

سيناريو الاختبار:

  1. انتقل إلى Guruصفحة العرض التوضيحي 99 – https://demo.guru99.com/test/guru99home/
  2. انقر على SAP الصفحة
  3. أدخل البيانات في مربعات النص الخاصة بالاسم والبريد الإلكتروني
  4. حدد قيمة من القائمة المنسدلة للدورة التدريبية
  5. أغلق المتصفح
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Support.UI;


namespace Guru99Demo
{
	class TestSelect						
    {
        IWebDriver m_driver;

        [Test]
		public void selectDemo()
        {
            m_driver = new ChromeDriver("G:\\");
            m_driver.Url = "https://demo.guru99.com/test/guru99home/";
            m_driver.Manage().Window.Maximize();

            IWebElement course = m_driver.FindElement(By.XPath(".//*[@id='awf_field-91977689']"));

			var selectTest = new SelectElement(course);
			// Select a value from the dropdown				
            selectTest.SelectByValue("sap-abap");
                        
        }
    }
}

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

استعمل SeleniumWebDriver 4.x مع NUnit 3.14 أو NUnit 4، بالإضافة إلى NUnit3TestAdapter و Microsoft.NET.Test.Sdk. NUnit 4 يستهدف .NET Framework 4.6.2 أو .NET 6 والإصدارات الأحدث، لذا تحقق من هدف مشروعك قبل الترقية من الحزم الموضحة أعلاه.

رقم Selenium 4.6 قدم Selenium يقوم المدير بتنزيل برنامج تشغيل المتصفح ومطابقته أثناء التشغيل. لا يزال تمرير مجلد برنامج التشغيل إلى مُنشئ ChromeDriver يعمل، ولكنه ضروري فقط عند الحاجة إلى تثبيت إصدار مُحدد من برنامج التشغيل.

يطبق الانتظار الضمني مهلة زمنية واحدة على كل عملية بحث عن عنصر طوال مدة تشغيل مثيل IWebDriver. أما الانتظار الصريح فيستهدف عنصرًا واحدًا وشرطًا واحدًا، مثل قابلية النقر أو الظهور، لذا يفشل بشكل أسرع ويصف الغرض بدقة أكبر.

نعم. ضع علامة "Parallelizable" على التجميعة، وسيقوم NUnit بتشغيل الاختبارات المتزامنة. يجب أن يمتلك كل اختبار مثيل IWebDriver خاص به، لذا أنشئ برنامج التشغيل في SetUp بدلاً من مشاركة حقل ثابت، وإلا ستتعارض الاختبارات المتوازية على نفس المتصفح.

يستخدم كل من NUnit وMSTest السمات ويُجمّعان الاختبارات باستخدام TestFixture أو TestClass. لا يحتاج xUnit إلى سمة فئة، وقد صُمم خصيصًا للتوازي. تعمل جميعها الثلاثة في Test Explorer؛ ويظل NUnit الخيار الأكثر شيوعًا لـ Selenium العمل بلغة C#.

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

نعم. بناءً على تعليق يصف السيناريو، يقوم Copilot بإنشاء عناصر SetUp وTest وTearDown، ويقترح استدعاءات FindElement من التعليمات البرمجية المحيطة. تحقق من محددات العناصر مقابل الصفحة المباشرة، لأن المحددات المُنشأة تُستنتج بدلاً من فحصها.

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

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