Selenium مثال لبرنامج Java Webdriver (نموذج التعليمات البرمجية)

Selenium مثال جافا

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

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

Selenium نموذج كود WebDriver

يوجد أدناه رمز 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 = "http://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، أبو بريص و firefox لديه مشكلات في التوافق وقد يصبح إعدادها بشكل صحيح مهمة شاقة. إذا لم يعمل الكود، قم بالرجوع إلى Firefox الإصدار 47 أو أقل. وبدلاً من ذلك، يمكنك تشغيل البرامج النصية الخاصة بك على Chrome. Selenium يعمل من box للكروم. كل ما عليك فعله هو تغيير ثلاثة أسطر من التعليمات البرمجية حتى يعمل البرنامج النصي الخاص بك مع Chrome أو Firefox

شرح الكود

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

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

  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();

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

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

System.exit(0);

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

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

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

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

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

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

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

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

نقدم لك هذه الخدمة Selenium نموذج التعليمات البرمجية الذي يحدد موقع العنصر بواسطة معرفه. يتم استخدام Facebook كعنوان 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() طريقة لاستخراج اسم العلامة لهذا العنصر المعين الذي يكون معرفه "email". عند التشغيل، يجب أن يكون هذا الرمز قادرًا على تحديد اسم العلامة "الإدخال" بشكل صحيح وسيتم طباعته Eclipseنافذة وحدة التحكم.

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

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

الاختلافات / التنوعات الوصف عينة
بواسطة.اسم الفئة يبحث عن العناصر بناءً على قيمة السمة "الفئة". findElement(By.className("someClassName"))
بواسطة.cssSelector يعثر على العناصر بناءً على محرك CSS Selector الأساسي لبرنامج التشغيل findElement(By.cssSelector("input#email"))
بواسطة.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() يتم استخدام الطريقة لمحاكاة النقر على أي عنصر. المتابعةwing Selenium يوضح مثال جافا كيف click() تم استخدامه للنقر على زر "تسجيل الدخول" الخاص بشركة Mercury Tours.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

انتقل إلى()

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

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

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

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

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

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

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

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

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

أغلق()

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

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

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

  • لا يحتاج إلى معلمات
  • يغلق كل شيء windows الذي فتحه WebDriver.

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

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

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

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

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

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

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 للتركيز على الإطار أو النافذة المنبثقة أولاً قبل أن نتمكن من الوصول إلى العناصر الموجودة بداخلها. لنأخذ، على سبيل المثال، صفحة الويب http://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("http://demo.guru99.com/selenium/deprecated.html");
	        driver.switchTo().frame("classFrame");
	        driver.findElement(By.linkText("Deprecated")).click();
	        driver.close(); 
	    }
}

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

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

يسمح WebDriver بالنوافذ المنبثقة windows مثل التنبيهات التي سيتم عرضهاyed، خلافا في Selenium بيئة تطوير متكاملة. للوصول إلى العناصر الموجودة في التنبيه (مثل الرسالة التي يحتوي عليها)، يجب علينا استخدام "switchTo().alert()" طريقة. في الكود أدناه، سوف نستخدم هذه الطريقة للوصول إلى التنبيه box ومن ثم استرداد رسالتها باستخدام "getText()" الطريقة، ثم قم بإغلاق التنبيه تلقائيًا box يستخدم ال "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. للمتابعةwing Selenium على سبيل المثال WebDriver، سننتظر ما يصل إلى 10 ثوانٍ حتى يصبح العنصر الذي معرفه هو "اسم المستخدم" مرئيًا قبل المتابعة إلى الأمر التالي. وهنا الخطوات.

خطوة 1

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

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

خطوة 2

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

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

خطوة 3

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

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

الظروف

فولوwing يتم استخدام الأساليب في الشرطية والحلقات operaشؤون —

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

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

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

الشروط هي العرضyed()

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

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

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

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

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

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

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

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

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

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

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

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

عند استخدام isEnabled()، يتم استخدام isDisplayed()، وisSelected ()، يفترض WebDriver أن العنصر موجود بالفعل في الصفحة. آخرwise، وسوف يرمي 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".

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

نبذة عامة

  • لبدء استخدام WebDriver API، يجب عليك استيراد هاتين الحزمتين على الأقل.
  • org.openqa.selenium.*
  • org.openqa.selenium.firefox.Firefoxسائق
  • get() الطريقة تعادل Selenium الأمر "الفتح" الخاص بـ IDE.
  • يتم تحديد موقع العناصر في WebDriver باستخدام الملف findElement() الأسلوب.
  • التاليwing هي الخيارات المتاحة لتحديد موقع العناصر في WebDriver:
  • بواسطة.اسم الفئة
  • بواسطة.cssSelector
  • بواسطة.id
  • بواسطة.linkText
  • بالاسم
  • بواسطة.partialLinkText
  • بواسطة.tagName
  • بواسطة.xpath
  • By.cssSelector() لا دعم "يتضمن" ميزة.
  • يمكنك إنشاء عنصر باستخدام فئة WebElement.
  • يتم النقر على أحد العناصر باستخدام click() الأسلوب.
  • يوفر WebDriver أوامر الحصول المفيدة هذه:
  • احصل على()
  • getTitle ()
  • getPageSource ()
  • getCurrentUrl ()
  • الحصول على النص()
  • يوفر WebDriver أوامر التنقل المفيدة هذه
  • التنقل ().إلى الأمام ()
  • التنقل ().العودة ()
  • انتقل إلى()
  • التنقل ().تحديث ()
  • يتم استخدام طريقتي الإغلاق () وإنهاء () لإغلاق المتصفح windows. Close() يستخدم لإغلاق نافذة واحدة. بينما quit() يستخدم لإغلاق كافة windows المرتبط بالنافذة الأصلية التي كان كائن WebDriver يتحكم فيها.
  • switchTo().frame() و switchTo().alert() يتم استخدام الأساليب لتوجيه تركيز WebDriver إلى إطار أو تنبيه، على التوالي.
  • Implicit waits يتم استخدامها لتعيين وقت الانتظار طوال البرنامج، بينما explicit waits يتم استخدامها فقط على أجزاء محددة.
  • يمكنك استخدام isEnabled()، isDisplayed()،isSelected()، ومجموعة من WebDriverWait و الشروط المتوقعة طرق عند التحقق من حالة العنصر. ومع ذلك، فإنهم لا يتحققون من عدم وجود العنصر.
  • عندما يتم تمكين ()، يتم عرض isDisplayed()، أو تم استدعاء isSelected() بينما لم يكن العنصر موجودًا، فسيقوم WebDriver بطرح ملف NoSuchElementException.
  • عندما يتم استدعاء أساليب WebDriverWait وExpectedConditions بينما لم يكن العنصر موجودًا، فسيقوم WebDriver بإلقاء خطأ TimeoutException.

ملحوظة:

driver.get(): يتم استخدامه للانتقال إلى موقع ويب معين، لكنه لا يحتفظ بسجل المتصفح وملفات تعريف الارتباط، لذلك لا يمكننا استخدام زر التقدم والرجوع، إذا نقرنا عليه، فلن تحصل الصفحة على جدول زمني

driver.navigate(): يتم استخدامه للانتقال إلى موقع ويب معين، ولكنه يحتفظ بسجل المتصفح وملفات تعريف الارتباط، حتى نتمكن من استخدام الزر للأمام والخلف للتنقل بين الصفحات أثناء تشفير Testcase