Selenium برنامج تشغيل الويب Java مثال البرنامج

⚡ ملخص ذكي

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

  • ⚙️ إعداد البيئة: تثبيت Java, Eclipse أو IntelliJ، قم بالتكوين Selenium المكتبات، واختر برنامج التشغيل الثنائي المناسب لإصدار متصفحك.
  • 🧭 محددات العناصر: استخدم المعرف والاسم والفئة و XPath ومحدد CSS و linkText لتحديد العناصر بشكل ثابت عبر المتصفحات والإصدارات.
  • ⌨️ الإجراءات والمدخلات: يدعم WebDriver النقر، وإرسال المفاتيح، والإرسال، وتحديد القوائم المنسدلة، وأحداث لوحة المفاتيح للتفاعل الكامل بأسلوب المستخدم.
  • ⏳ الانتظار الذكي: استبدل Thread.sleep بعمليات انتظار ضمنية وصريحة وسلسة مدفوعة بـ ExpectedConditions للتخلص من الاختبارات غير المستقرة.
  • ؟؟؟؟ معالجة الاستثناء: قم بالتقاط استثناءات NoSuchElementException و TimeoutException و StaleElementReferenceException للحفاظ على مرونة مجموعات التشغيل الآلي.
  • 🤖 توليد اختبارات الذكاء الاصطناعي: تقوم المساعدات المدعومة بالذكاء الاصطناعي بإنشاء نصوص WebDriver نمطية، واقتراح محددات المواقع، وإصلاح المحددات تلقائيًا عند تغيير DOM.

Selenium ويب درايفر Java البرنامج

Selenium Java مثال

باستخدام Java فئة "myclass" التي أنشأناها في البرنامج التعليمي السابق، فلنحاول إنشاء برنامج نصي WebDriver من شأنه:

الخطوة 1 : جلب Mercury الصفحة الرئيسية للجولات
الخطوة 2 : التحقق من عنوانها
الخطوة 3 : طباعة نتيجة المقارنة
الخطوة 4 : أغلقه قبل إنهاء البرنامج بأكمله.

Selenium نموذج WebDriver Code

يوجد أدناه رمز WebDriver الفعلي للمنطق الذي قدمه السيناريو أعلاه

package newproject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
//comment the above line and uncomment below line to use Chrome
//import org.openqa.selenium.chrome.ChromeDriver;
public class PG1 {


    public static void main(String[] args) {
        // declaration and instantiation of objects/variables
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
		WebDriver driver = new FirefoxDriver();
		//comment the above 2 lines and uncomment below 2 lines to use Chrome
		//System.setProperty("webdriver.chrome.">driver","G:\\chromedriver.exe");
		//WebDriver driver = new ChromeDriver();
    	
        String baseUrl = "https://demo.guru99.com/test/newtours/";
        String expectedTitle = "Welcome: Mercury Tours";
        String actualTitle = "";

        // launch Fire fox and direct it to the Base URL
        driver.get(baseUrl);

        // get the actual value of the title
        actualTitle = driver.getTitle();

        /*
         * compare the actual title of the page with the expected one and print
         * the result as "Passed" or "Failed"
         */
        if (actualTitle.contentEquals(expectedTitle)){
            System.out.println("Test Passed!");
        } else {
            System.out.println("Test Failed");
        }
       
        //close Fire fox
        driver.close();
    }

}

ملاحظة: البدء Firefox 35، تحتاج إلى استخدام برنامج تشغيل gecko الذي أنشأته Mozilla لاستخدام Web Driver. Selenium 3.0، يواجه gecko وfirefox مشكلات في التوافق، وقد يصبح ضبطهما بشكل صحيح مهمة شاقة. إذا لم يعمل الكود، فقم بالترقية إلى Firefox الإصدار 47 أو أقل. وبدلاً من ذلك، يمكنك تشغيل البرامج النصية الخاصة بك على Chrome. Selenium يعمل البرنامج النصي الخاص بك مع Chrome. ما عليك سوى تغيير 3 أسطر من التعليمات البرمجية لجعل البرنامج النصي الخاص بك يعمل مع Chrome أو Firefox

شرح الكود

استيراد الحزم

للبدء، تحتاج إلى استيراد الحزمتين التاليتين:

  1. org.openqa.selenium.*- يحتوي على فئة WebDriver اللازمة لإنشاء متصفح جديد محمّل ببرنامج تشغيل محدد
  2. org.openqa.selenium.firefox.Firefoxسائق - يحتوي على Firefoxفئة برنامج التشغيل اللازمة لإنشاء مثيل لـ a Firefox- برنامج تشغيل محدد على المتصفح الذي تم إنشاء مثيل له بواسطة فئة WebDriver

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

إنشاء مثيل للكائنات والمتغيرات

عادةً، هذه هي الطريقة التي يتم بها إنشاء كائن برنامج التشغيل.

WebDriver driver = new FirefoxDriver();

A Firefoxفئة برنامج التشغيل بدون معلمات تعني أن الإعداد الافتراضي Firefox سيتم إطلاق الملف الشخصي من قبلنا Java برنامج. الافتراضي Firefox الملف الشخصي مشابه للإطلاق Firefox في الوضع الآمن (لا يتم تحميل أي ملحقات).

ولتسهيل الأمر، قمنا بحفظ القاعدة URL والعنوان المتوقع كمتغيرات.

إطلاق جلسة المتصفح

WebDriver's احصل على() تُستخدم هذه الطريقة لبدء جلسة متصفح جديدة وتوجيهها إلى URL التي تحددها كمعامل لها.

driver.get(baseUrl);

احصل على عنوان الصفحة الفعلي

تحتوي فئة WebDriver على getTitle () الطريقة المستخدمة دائمًا للحصول على عنوان الصفحة المحملة حاليًا.

actualTitle = driver.getTitle();

قارن بين القيم المتوقعة والفعلية

يستخدم هذا الجزء من الكود ببساطة قاعدة أساسية Java هيكل if-else لمقارنة العنوان الفعلي بالعنوان المتوقع.

if (actualTitle.contentEquals(expectedTitle)){
            System.out.println("Test Passed!");
        } else {
            System.out.println("Test Failed");
        }

إنهاء جلسة المتصفح

في "أغلق()يتم استخدام الطريقة لإغلاق نافذة المتصفح.

driver.close();

إنهاء البرنامج بأكمله

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

System.exit(0);

إجراء الاختبار

هناك طريقتان لتنفيذ التعليمات البرمجية Eclipse IDE

  1. On Eclipseفي شريط القوائم، انقر فوق تشغيل > تشغيل.
  2. الإعلام CTRL + F11 لتشغيل الكود بأكمله.

إجراء الاختبار

إذا فعلت كل شيء بشكل صحيح ، Eclipse سيخرج "تم الاختبار بنجاح!"

إجراء الاختبار

تحديد موقع عناصر واجهة المستخدم الرسومية

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

نقدم لك هذه الخدمة Selenium نموذج برمجي يحدد موقع عنصر باستخدام معرّفه. يُستخدم فيسبوك كقاعدة بيانات. URL.

package newproject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PG2 {
    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
    	WebDriver driver = new FirefoxDriver();
        String baseUrl = "http://www.facebook.com";
        String tagName = "";
        
        driver.get(baseUrl);
        tagName = driver.findElement(By.id("email")).getTagName();
        System.out.println(tagName);
        driver.close();
        System.exit(0);
}
}

استخدمنا getTagName() طريقة لـtract اسم الوسم الخاص بالعنصر المحدد الذي يحمل المعرّف "email". عند تشغيل هذا الكود، يجب أن يكون قادرًا على تحديد اسم الوسم "input" بشكل صحيح وطباعته على Eclipseنافذة وحدة التحكم.

تحديد موقع عناصر واجهة المستخدم الرسومية

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

الاختلافات / التنوعات الوصف عينة
بواسطة.اسم الفئة يبحث عن العناصر بناءً على قيمة السمة "الفئة". findElement(By.className("someClassName"))
بواسطة.cssSelector يعثر على العناصر بناءً على محرك CSS Selector الأساسي لبرنامج التشغيل ابحث عن العنصر (By.cssSelector ("إدخال#البريد الإلكتروني"))
بواسطة.id يحدد موقع العناصر حسب قيمة السمة "id" الخاصة بها findElement(By.id("someId"))
 
بواسطة.linkText يعثر على عنصر الارتباط بالنص الدقيق الذي يعرضه findElement(By.linkText("التسجيل"))
 
بالاسم يحدد موقع العناصر حسب قيمة السمة "الاسم". findElement(By.name("someName"))
 
بواسطة.partialLinkText يحدد موقع العناصر التي تحتوي على نص الرابط المحدد findElement(By.partialLinkText("REG"))
 
بواسطة.tagName يحدد موقع العناصر حسب اسم العلامة الخاصة بها findElement(By.tagName("div"))
 
بواسطة.xpath يحدد موقع العناصر عبر XPath findElement(By.xpath(“//html/body/div/table/tbody/tr/td[2]/table/
tbody/tr[4]/td/table/tbody/tr/td[2]/table/tbody/tr[2]/td[3]/ form/table/tbody/tr[5]”))

ملاحظة حول استخدام findElement(By.cssSelector())

By.cssSelector() لا يدعم ميزة "يحتوي على". النظر في Selenium رمز IDE أدناه -

ملاحظة حول استخدام findElement(By.cssSelector())

In Selenium IDE أعلاه، نجح الاختبار بأكمله. ومع ذلك في Selenium WebDriver أدناه، أدى نفس الاختبار إلى حدوث خطأ لأن WebDriver لا يدعم الكلمة الأساسية "يحتوي على" عند استخدامها في أسلوب By.cssSelector().

ملاحظة حول استخدام findElement(By.cssSelector())

أوامر مشتركة

إنشاء مثيل لعناصر الويب

بدلاً من استخدام صيغة "driver.findElement(By.locator())" الطويلة في كل مرة تقوم فيها بالوصول إلى عنصر معين، يمكننا إنشاء كائن WebElement له. توجد فئة WebElement في الحزمة "org.openqa.selenium.*".

إنشاء مثيل لعناصر الويب

النقر على عنصر

ربما يكون النقر هو الطريقة الأكثر شيوعًا للتفاعل مع عناصر الويب. ال click() يتم استخدام الطريقة لمحاكاة النقر على أي عنصر. فيما يلي Selenium Java المثال يوضح كيف click() تم استخدامه للنقر على Mercury زر "تسجيل الدخول" الخاص بالجولات.

النقر على عنصر

يجب ملاحظة الأمور التالية عند استخدام طريقة click()

  • لا يأخذ أي معلمة/وسيطة.
  • تنتظر الطريقة تلقائيًا تحميل صفحة جديدة إن أمكن.
  • يجب أن يكون العنصر المراد النقر عليه مرئيًا (يجب ألا يساوي الارتفاع والعرض الصفر).

الحصول على الأوامر

احصل على أوامر لجلب معلومات مهمة متنوعة حول الصفحة/العنصر. فيما يلي بعض أوامر "الحصول على" المهمة التي يجب أن تكون على دراية بها.

أوامر الأستعمال
احصل على()

استخدام العينة:

  • يقوم تلقائيًا بفتح نافذة متصفح جديدة ويجلب الصفحة التي تحددها بين قوسين.
  • وهو المقابل ل Selenium الأمر "الفتح" الخاص بـ IDE.
  • يجب أن تكون المعلمة أ خيط موضوع.
getTitle ()

استخدام العينة:

  • لا يحتاج إلى معلمات
  • لجلب عنوان الصفحة الحالية
  • يتم قطع المسافات البيضاء البادئة والزائدة
  • إرجاع سلسلة فارغة إذا لم يكن للصفحة عنوان
getPageSource ()

استخدام العينة:

  • لا يحتاج إلى معلمات
  • إرجاع الكود المصدري للصفحة كقيمة سلسلة
getCurrentUrl ()

استخدام العينة:

  • لا يحتاج إلى معلمات
  • يسترجع السلسلة التي تمثل الحالة الحالية URL المتصفح الذي ينظر إليه
الحصول على النص()

استخدام العينة:

  • جلب النص الداخلي للعنصر الذي تحدده

التنقل في الأوامر

تسمح لك هذه الأوامر بالتحديث والدخول والتبديل بين صفحات الويب المختلفة.

انتقل إلى()

استخدام العينة:

  • يقوم تلقائيًا بفتح نافذة متصفح جديدة ويجلب الصفحة التي تحددها بين قوسين.
  • إنه يفعل بالضبط نفس الشيء مثل get() الأسلوب.
التنقل ().تحديث ()

استخدام العينة:

  • لا يحتاج إلى معلمات.
  • يقوم بتحديث الصفحة الحالية.
التنقل ().العودة ()

استخدام العينة:

  • لا يحتاج إلى معلمات
  • يعيدك بصفحة واحدة في سجل المتصفح.
التنقل ().إلى الأمام ()

استخدام العينة:

  • لا يحتاج إلى معلمات
  • ينقلك إلى الأمام بصفحة واحدة في سجل المتصفح.

إغلاق وإنهاء المتصفح Windows

أغلق()

استخدام العينة:

  • لا يحتاج إلى معلمات
  • فهو يغلق فقط نافذة المتصفح التي يتحكم فيها WebDriver حاليًا.
استقال()

استخدام العينة:

  • لا يحتاج إلى معلمات
  • يقوم بإغلاق كافة النوافذ التي فتحها WebDriver.

إغلاق وإنهاء المتصفح Windows

لتوضيح الفرق بين close() و quit()، حاول تنفيذ الكود أدناه. يستخدم صفحة ويب تنبثق تلقائيًا نافذة عند تحميل الصفحة وتفتح نافذة أخرى بعد الخروج.

إغلاق وإنهاء المتصفح Windows

لاحظ أنه تم إغلاق نافذة المتصفح الرئيسي فقط وليس النافذتين المنبثقتين.

إغلاق وإنهاء المتصفح Windows

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

package newproject;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class PG3 {
    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
    	WebDriver driver = new FirefoxDriver();
        driver.get("http://www.popuptest.com/popuptest2.html");
        driver.quit();  // using QUIT all windows will close
    }
}

التبديل بين الإطارات

للوصول إلى عناصر واجهة المستخدم الرسومية في الإطار، يجب علينا أولاً توجيه WebDriver للتركيز على الإطار أو النافذة المنبثقة أولاً قبل أن نتمكن من الوصول إلى العناصر الموجودة بداخلها. لنأخذ، على سبيل المثال، صفحة الويب https://demo.guru99.com/selenium/deprecated.html

التبديل بين الإطارات

تحتوي هذه الصفحة على 3 إطارات تمت الإشارة إلى سمات "اسمها" أعلاه. نرغب في الوصول إلى الرابط "موقوف" المحاط بدائرة باللون الأصفر أعلاه. وللقيام بذلك، يجب علينا أولاً أن نطلب من WebDriver التبديل إلى إطار "classFrame" باستخدام الملف "التبديل إلى ().الإطار ()" طريقة. سوف نستخدم سمة اسم الإطار كمعلمة للجزء "frame()".

package newproject;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class PG4 {
	  public static void main(String[] args) {
		  	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");  
		  	WebDriver driver = new FirefoxDriver();
	        driver.get("https://demo.guru99.com/selenium/deprecated.html");
	        driver.switchTo().frame("classFrame");
	        driver.findElement(By.linkText("Deprecated")).click();
	        driver.close(); 
	    }
}

بعد تنفيذ هذا الكود، سترى أن إطار "classFrame" تم نقله إلى صفحة "Deprecated API"، مما يعني أن الكود الخاص بنا تمكن بنجاح من الوصول إلى الرابط "Deprecated".

التبديل بين النوافذ المنبثقة Windows

يتيح لك WebDriver عرض النوافذ المنبثقة مثل التنبيهات، على عكس Selenium بيئة تطوير متكاملة. للوصول إلى العناصر الموجودة في التنبيه (مثل الرسالة التي يحتوي عليها)، يجب علينا استخدام "switchTo().alert()" الطريقة. في الكود أدناه، سنستخدم هذه الطريقة للوصول إلى مربع التنبيه ثم استرداد رسالته باستخدام "getText()" الطريقة، ثم قم بإغلاق مربع التنبيه تلقائيًا باستخدام "switchTo().alert().accept()" الأسلوب.

أولاً، توجه إلى https://output.jsbin.com/usidix/1 وانقر يدويًا على "اذهب!" زر هناك وانظر بنفسك نص الرسالة.

التبديل بين النوافذ المنبثقة Windows

دعونا نرى Selenium رمز المثال للقيام بذلك-

package mypackage;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class myclass {

    public static void main(String[] args) {
    	System.setProperty("webdriver.gecko.">driver","C:\\geckodriver.exe");
        WebDriver driver = new FirefoxDriver();
        String alertMessage = "";

        driver.get("http://jsbin.com/usidix/1");
        driver.findElement(By.cssSelector("input[value=\"Go!\"]")).click();
        alertMessage = driver.switchTo().alert().getText();
        driver.switchTo().alert().accept();
       
        System.out.println(alertMessage);
        driver.quit();
       
    }
}

على Eclipse وحدة التحكم، لاحظ أن رسالة التنبيه المطبوعة هي:

التبديل بين النوافذ المنبثقة Windows

ينتظر

هناك نوعان من الانتظار.

  1. الانتظار الضمني – يُستخدم لتعيين وقت الانتظار الافتراضي خلال البرنامج
  2. الانتظار الصريح - يُستخدم لتعيين وقت الانتظار لمثيل معين فقط

الانتظار الضمني

  • يعد البرمجة أسهل من الانتظار الصريح.
  • يتم الإعلان عنه عادة في جزء إنشاء مثيل من التعليمات البرمجية.
  • سوف تحتاج فقط إلى حزمة إضافية واحدة لاستيرادها.

للبدء في استخدام الانتظار الضمني، سيتعين عليك استيراد هذه الحزمة إلى التعليمات البرمجية الخاصة بك.

الانتظار الضمني

ثم في جزء إنشاء مثيل من التعليمات البرمجية الخاصة بك، قم بإضافة هذا.

الانتظار الضمني

الانتظار الصريح

تتم عمليات الانتظار الصريحة باستخدام فئتي WebDriverWait وExppectedCondition. لما يلي Selenium على سبيل المثال WebDriver، سننتظر ما يصل إلى 10 ثوانٍ حتى يصبح العنصر الذي معرفه هو "اسم المستخدم" مرئيًا قبل المتابعة إلى الأمر التالي. وهنا الخطوات.

الخطوة 1 :

قم باستيراد هاتين الحزمتين:

الانتظار الصريح

الخطوة 2 :

قم بتعريف متغير WebDriverWait. في هذا المثال، سوف نستخدم "myWaitVar" كاسم للمتغير.

الانتظار الصريح

الخطوة 3 :

استخدم myWaitVar مع ExpectedConditions على الأجزاء التي تحتاج إلى الانتظار الصريح لحدوثها. في هذه الحالة، سوف نستخدم الانتظار الصريح على "اسم المستخدم" (Mercury Tours HomePage) أدخل قبل أن نكتب النص "البرنامج التعليمي" عليه.

الانتظار الصريح

الشروط

تُستخدم الطرق التالية في العبارات الشرطية و...ping العمليات —

  • ممكّن () يتم استخدامه عندما تريد التحقق مما إذا كان عنصر معين ممكّنًا أم لا قبل تنفيذ الأمر.

الشروط ممكّنة ()

  • يتم عرضه يتم استخدامه عندما تريد التحقق من عرض عنصر معين أم لا قبل تنفيذ أمر ما.

الشروط isDisplayed()

  • تم الإختيار() يتم استخدامه عندما تريد التحقق مما إذا كان معينًا مربع الاختيار أو زر الاختيار أو الخيار في مربع القائمة المنسدلة تم الإختيار. ولا يعمل على العناصر الأخرى.

تم تحديد الشروط()

باستخدام الشروط المتوقعة

توفر فئة ExpectedConditions مجموعة واسعة من الشروط التي يمكنك استخدامها مع طريقة WebDriverWait until().

فيما يلي بعض الطرق المتوقعة الأكثر شيوعًا.

  • تنبيهIsPresent() - ينتظر حتى يتم عرض مربع التنبيه.

استخدام تنبيه الشروط المتوقعة ()

  • elementToBeClickable() - ينتظر حتى يصبح العنصر مرئيًا ويتم تمكينه في نفس الوقت. العينة Selenium Code سينتظر الكود أدناه حتى يصبح العنصر الذي يحمل المعرف "username" مرئيًا ومفعلاً أولاً قبل تعيين هذا العنصر كمتغير WebElement باسم "txtUserName".

باستخدام الشروط المتوقعة

  • FrameToBeAvailableAndSwitchToIt() - ينتظر حتى يصبح الإطار المحدد متاحًا بالفعل، ثم يتحول إليه تلقائيًا.

باستخدام العناصر المتوقعة elementToBeClickable()

اصطياد الاستثناءات

عند استخدام isEnabled() وisDisplayed() وisSelected()، يفترض WebDriver أن العنصر موجود بالفعل على الصفحة. وإلا، فسوف يطرح خطأ NoSuchElementException. لتجنب ذلك، يجب علينا استخدام كتلة محاولة الالتقاط حتى لا يتم مقاطعة البرنامج.

WebElement txtbox_username = driver.findElement(By.id("username"));
try{
        if(txtbox_username.isEnabled()){
            txtbox_username.sendKeys("tutorial");
        }
    }

catch(NoSuchElementException nsee){
            System.out.println(nsee.toString());
 }

إذا كنت تستخدم انتظارًا صريحًا، فإن نوع الاستثناء الذي يجب عليك التقاطه هو "TimeoutException".

اصطياد الاستثناءات

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

قم بتثبيت JDK، وبيئة تطوير متكاملة مثل Eclipse أو IntelliJ، Selenium Java المكتبات، وبرنامج تشغيل المتصفح المتوافق. أدوات أتمتة البناء مثل Maven أو Gradle تبسيط إدارة التبعيات.

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

نعم. GitHub Copilot و Cursor و JetBrains توليد الذكاء الاصطناعي Java Selenium تُسهّل هذه البرامج النصية عملية كتابة الخطوات بلغة بسيطة، بما في ذلك عمليات الانتظار والتأكيدات وكائنات الصفحات. كما أنها تُقلل بشكل كبير من التعليمات البرمجية المتكررة اللازمة لسيناريوهات الاختبار الجديدة.

تُعيد الدالة findElement أول عنصر ويب مطابق، أو تُطلق استثناء NoSuchElementException. أما الدالة findElements فتُعيد قائمة بجميع العناصر المطابقة، وتُعيد قائمة فارغة في حال عدم العثور على أي عنصر، دون إطلاق الاستثناء مطلقًا.

تُوقف الدالة Thread.sleep العمليات لفترة زمنية محددة بغض النظر عن حالة الصفحة، مما يُبطئ العمليات السريعة ويُفشل العمليات البطيئة. استخدم WebDriverWait مع ExpectedConditions للانتظار فقط للمدة اللازمة.

Selenium يدعم ChromeDriver و GeckoDriver لـ Firefox، EdgeDriver و SafariDriver و IEDriverServer. Selenium يقوم برنامج إدارة الإصدارات 4 بتنزيل برنامج التشغيل الصحيح تلقائيًا.

قم بضبط خيارات Chrome أو Firefoxكائن الخيارات مع setAcceptInsecureCerts(true). هذا يُخبر المتصفح بتجاهل الشهادات غير الصالحة حتى تتمكن جلسة WebDriver من الاستمرار.

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

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