WebElement في السيلينيوم: النصBox، زر، مفاتيح الإرسال ()، انقر فوق ()

WebElement في السيلينيوم

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

سنرى كيفية الوصول إلى عناصر النموذج المختلفة هذه باستخدام Selenium Web Driver مع Java. يقوم السيلينيوم بتغليف كل عنصر نموذج ككائن من WebElement. يوفر واجهة برمجة التطبيقات (API) للعثور على العناصر واتخاذ الإجراءات اللازمة بشأنها مثل إدخال النص في النص boxes، والنقر على الأزرار، وما إلى ذلك. سنرى الطرق المتاحة للوصول إلى كل عنصر من عناصر النموذج.

مقدمة إلى WebElement، findElement()، findElements()

يقوم برنامج Selenium Web Driver بتغليف عنصر نموذج بسيط ككائن WebElement.

هناك تقنيات مختلفة يحدد من خلالها WebDriver عناصر النموذج بناءً على الخصائص المختلفة لعناصر الويب مثل المعرف والاسم والفئة وXPath وTagname ومحددات CSS ونص الرابط وما إلى ذلك.

يوفر برنامج تشغيل الويب ما يليwing طريقتان WebElement للعثور على العناصر.

  • العثور على العنصر () - يعثر على عنصر ويب واحد ويعيده ككائن WebElement Selenium.
  • العثور على العناصر () – إرجاع قائمة بكائنات WebElement المطابقة لمعايير محدد المواقع.

دعونا نرى مقتطفات التعليمات البرمجية للحصول على عنصر واحد - حقل النص في صفحة ويب ككائن من WebElement باستخدام طريقة findElement(). سنغطي طريقة findElements()‎ للعثور على عناصر متعددة في البرامج التعليمية اللاحقة.

الخطوة 1) نحتاج إلى استيراد هذه الحزمة لإنشاء كائنات من عناصر الويب

مقدمة إلى WebElement FindElement، FindElements

الخطوة 2) نحتاج إلى استدعاء طريقة findElement() المتوفرة في فئة WebDriver والحصول على كائن WebElement.

راجع أدناه لمعرفة كيف يتم ذلك.

نص إدخال السيلينيوم

إدخال boxتشير es إلى أي من هذين النوعين:

  1. حقول النص- نص إدخال السيلينيوم boxالتي تقبل القيم المكتوبة وتظهرها كما هي.
  2. حقول كلمة المرور- نص boxالتي تقبل القيم المكتوبة ولكنها تخفيها كسلسلة من الأحرف الخاصة (عادةً النقاط والعلامات النجمية) لتجنب عرض القيم الحساسة.

    نص إدخال السيلينيوم

تحديد المواقع

تأخذ الطريقة findElement()‎ معاملًا واحدًا وهو محدد موقع العنصر. تحدد مواقع مختلفة مثل By.id() وBy.name() وBy.xpath() وBy.CSSSelector() وما إلى ذلك العناصر الموجودة في الصفحة باستخدام خصائصها مثل المعرف "" أو الاسم أو المسار وما إلى ذلك.

يمكنك استخدام المكونات الإضافية مثل Fire path للحصول على مساعدة في الحصول على المعرف وxpath وما إلى ذلك للعناصر.

باستخدام موقع المثال https://demo.guru99.com/test/login.html الموضح أدناه هو الرمز لتحديد موقع "Email حقل النص "العنوان" باستخدام محدد موقع الهوية وحقل "كلمة المرور" باستخدام محدد موقع الاسم.

تحديد المواقع

  1. Email يقع حقل النص حسب المعرف
  2. يقع حقل كلمة المرور بالاسم

مفاتيح الإرسال في السيلينيوم

sendkeys () في السيلينيوم هي طريقة تُستخدم لإدخال محتوى قابل للتحرير في حقلي النص وكلمة المرور أثناء تنفيذ الاختبار. يتم تحديد هذه الحقول باستخدام محددات المواقع مثل الاسم والفئة والمعرف وما إلى ذلك. وهي طريقة متاحة في عنصر الويب. على عكس طريقة الكتابة، لا تحل طريقة sendkeys() محل النص الموجود في أي نص box.

كيفية إدخال النص في السيلينيوم

لإدخال نص في حقول النص وحقول كلمة المرور، فإن sendKeys() هي الطريقة المتاحة على WebElement في السيلينيوم.

باستخدام نفس المثال من https://demo.guru99.com/test/login.html site، إليك كيفية العثور على حقل النص وحقول كلمة المرور وإدخال النص في السيلينيوم.

النص في السيلينيوم

  1. ابحث عن "إيmail "العنوان" حقل النص باستخدام محدد موقع الهوية.
  2. ابحث عن حقل "كلمة المرور" باستخدام محدد الاسم
  3. أدخل النص في "Email العنوان" باستخدام طريقة مفاتيح السيلينيوم.
  4. أدخل كلمة المرور في حقل "كلمة المرور" باستخدام طريقة sendKeys().

حذف القيم في الإدخال Boxes

واضح() يتم استخدام الطريقة لحذف النص في الإدخال box. هذه الطريقة لا تحتاج إلى معلمة. سيقوم مقتطف الكود أدناه بمسح النص من ملف Email أو حقول كلمة المرور

حذف القيم في الإدخال Boxes

أزرار النقر السيلينيوم

يمكن الوصول إلى زر النقر على السيلينيوم باستخدام طريقة النقر ().

في المثال أعلاه

  1. ابحث عن الزر لتسجيل الدخول
  2. انقر على زر "تسجيل الدخول" الموجود في صفحة تسجيل الدخول الخاصة بالموقع لتسجيل الدخول إلى الموقع.

أزرار النقر السيلينيوم

أزرار إرسال السيلينيوم

تُستخدم أزرار الإرسال لإرسال النموذج بأكمله إلى الخادم. يمكننا إما استخدام طريقة النقر () على عنصر الويب مثل الزر العادي كما فعلنا أعلاه أو استخدام طريقة الإرسال () على أي عنصر ويب في النموذج أو على زر الإرسال نفسه.

أزرار إرسال السيلينيوم

عند استخدام Submit()، سيبحث WebDriver عن DOM لمعرفة النموذج الذي ينتمي إليه العنصر، ثم يقوم بتشغيل وظيفة الإرسال الخاصة به.

كود كامل

هنا هو رمز العمل الكامل

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

public class Form {				
    public static void main(String[] args) {									
    		
    	// declaration and instantiation of objects/variables		
        System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");					
        WebDriver driver = new ChromeDriver();					
        		
        String baseUrl = "https://demo.guru99.com/test/login.html";					
        driver.get(baseUrl);					

        // Get the WebElement corresponding to the Email Address(TextField)		
        WebElement email = driver.findElement(By.id("email"));							

        // Get the WebElement corresponding to the Password Field		
        WebElement password = driver.findElement(By.name("passwd"));							

        email.sendKeys("abcd@gmail.com");					
        password.sendKeys("abcdefghlkjl");					
        System.out.println("Text Field Set");					
         
        // Deleting values in the text box		
        email.clear();			
        password.clear();			
        System.out.println("Text Field Cleared");					

        // Find the submit button		
        WebElement login = driver.findElement(By.id("SubmitLogin"));							
                    		
        // Using click method to submit form		
        email.sendKeys("abcd@gmail.com");					
        password.sendKeys("abcdefghlkjl");					
        login.click();			
        System.out.println("Login Done with Click");					
        		
        //using submit method to submit the form. Submit used on password field		
        driver.get(baseUrl);					
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");							
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");							
        driver.findElement(By.id("SubmitLogin")).submit();					
        System.out.println("Login Done with Submit");					
         
		//driver.close();		
        		
    }		
}

استكشاف الأخطاء:

إذا واجهت NoSuchElementException() أثناء البحث عن العناصر، فهذا يعني أنه لم يتم العثور على العنصر في الصفحة عند وصول برنامج تشغيل الويب إلى الصفحة.

  1. تحقق من محدد موقعك مرة أخرى باستخدام Firepath أو Inspect Element في Chrome.
  2. تحقق مما إذا كانت القيمة التي استخدمتها في الكود مختلفة عن تلك الخاصة بالعنصر الموجود في Firepath الآن.
  3. بعض الخصائص ديناميكية لبعض العناصر. في حالة ما إذا وجدت أن القيمة مختلفة وتتغير ديناميكيًا، ففكر في استخدام By.xpath() أو By.cssSelector() الأكثر موثوقية ولكن complex طرق.
  4. في بعض الأحيان، يمكن أن تكون مشكلة انتظار أيضًا، أي أن برنامج تشغيل الويب نفذ التعليمات البرمجية الخاصة بك حتى قبل تحميل الصفحة بالكامل، وما إلى ذلك.
  5. أضف انتظارًا قبل findElement() باستخدام الانتظار الضمني أو الصريح.

نبذة عامة

  • يلخص الجدول أدناه الأوامر للوصول إلى كل نوع من العناصر التي تمت مناقشتها أعلاه
العنصر أمر الوصف
إدخال Box SendKeys () تستخدم لإدخال القيم على النص boxes
واضح() تستخدم لمسح النص boxes من قيمته الحالية
روابط انقر() يستخدم للنقر على الرابط والانتظار حتى يكتمل تحميل الصفحة قبل المتابعة إلى الأمر التالي.
إرسال زر يُقدِّم()
  • يسمح WebDriver بتحديد أكثر من خيار في عنصر تحديد متعدد.
  • يمكنك استخدام طريقة الإرسال () على أي عنصر داخل النموذج. سيقوم WebDriver تلقائيًا بتشغيل وظيفة الإرسال للنموذج الذي ينتمي إليه هذا العنصر.