كيفية التعامل مع التنبيهات والنوافذ المنبثقة في Selenium?
⚡ ملخص ذكي
التنبيهات والنوافذ المنبثقة في Selenium . Javaتُعيق مربعات الحوار البرمجية والنوافذ الفرعية تدفق العمليات الآلية. تشرح هذه المقالة كيفية تحديد التنبيهات البسيطة، والتنبيهات الفورية، وتنبيهات التأكيد، والتبديل إليها باستخدام WebDriver، وإدارة نوافذ متعددة باستخدام getWindowHandles().

ما هو التنبيه في Selenium?
An تنبيه في Selenium هو صغير Javaمربع حوار برمجي يظهر على الشاشة لتزويد المستخدم بمعلومات أو إشعارات. يمكنه تأكيد إجراء معين، أو طلب الإذن لتنفيذ عملية ما، أو عرض رسالة تحذيرية.
في هذا الدرس التعليمي، ستتعلم كيفية التعامل مع النوافذ المنبثقة في Selenium وأنواع التنبيهات المختلفة الموجودة في تطبيقات الويب تجريبسنتعرف أيضًا على كيفية التعامل مع التنبيهات في Selenium WebDriver وكيفية قبوله أو رفضه بناءً على نوع التنبيه.
أنواع التنبيهات في Selenium
Javaيعرض البرنامج النصي ثلاثة مربعات حوار تنبيهية Selenium يجب التعامل معها بشكل مختلف.
1) Simple Alert
يعرض التنبيه البسيط معلومات أو تحذيراً على الشاشة. ولا يمكن للمستخدم تأكيده إلا بالنقر. OK.
2) Prompt Alert
يطلب التنبيه من المستخدم إدخال بيانات. Selenium يمكن لـ WebDriver الكتابة فيه باستخدام sendKeys("input...").
3) Confirmation Alert
يطلب تنبيه التأكيد من المستخدم الموافقة على العملية أو إلغائها. وهو يعرض كلا الأمرين OK و إلغاء أزرار.
كيفية التعامل مع التنبيه في Selenium ويب درايفر
استخدم Alert واجهة في Selenium ويب درايفر يكشف عن أربع طرق تغطي كل تفاعل مع التنبيهات.
- استبعاد باطل () — ينقر على إلغاء .
driver.switchTo().alert().dismiss();
- قبول باطل () — ينقر على OK .
driver.switchTo().alert().accept();
- سلسلة getText () — يلتقط رسالة التنبيه.
driver.switchTo().alert().getText();
- مفاتيح الإرسال باطلة (سلسلة stringToSend) — يكتب نصًا في تنبيه موجه.
driver.switchTo().alert().sendKeys("Text");
Eclipse تُظهر خاصية الإكمال التلقائي طرق التنبيه المتاحة بعد typing alert. في سطر المحرر. يمكنك التبديل من النافذة الرئيسية إلى نافذة التنبيه في أي وقت باستخدام Seleniumالصورة .التبديل إلى() الأسلوب.
مثال عملي: حذف عرض توضيحي للعميل
لنقم بأتمتة السيناريو التالي. سنستخدم Guru99 موقعًا تجريبيًا للتوضيح Selenium معالجة التنبيهات.
الخطوة 1) قم بتشغيل المتصفح وافتحه https://demo.guru99.com/test/delete_customer.php.
الخطوة 2) أدخل أي رقم تعريف للعميل.
الخطوة 3) انقر على إرسال .
الخطوة 4) اقبل أو ارفض تنبيه التأكيد الناتج.
Selenium Java Code: مقبض Confirmation Alert
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.NoAlertPresentException;
import org.openqa.selenium.Alert;
public class AlertDemo {
public static void main(String[] args) throws NoAlertPresentException, InterruptedException {
// Selenium 4 ships Selenium Manager, so an explicit driver path is no longer required.
WebDriver driver = new ChromeDriver();
// Open the Delete Customer demo page
driver.get("https://demo.guru99.com/test/delete_customer.php");
driver.findElement(By.name("cusid")).sendKeys("53920");
driver.findElement(By.name("submit")).submit();
// Switch to the confirmation alert
Alert alert = driver.switchTo().alert();
// Capture the alert message
String alertMessage = alert.getText();
System.out.println(alertMessage);
Thread.sleep(5000);
// Accept the alert
alert.accept();
driver.quit();
}
}
الإخراج: يفتح المتصفح صفحة حذف العميل، ويرسل معرف العميل، ويقبل تنبيه التأكيد، ويزيل السجل من التطبيق التجريبي.
كيفية التعامل مع النوافذ المنبثقة Windows in Selenium ويب درايفر
عندما يتعين على الأتمتة العمل عبر نوافذ متصفح متعددة، يجب على الاختبار تبديل التركيز بينها والعودة إلى النافذة الأصلية بعد كل عملية. Selenium يوفر WebDriver طريقتين تجعلان هذا الأمر ممكناً.
driver.getWindowHandles()
يعود أ Set<String> لكل مقبض نافذة مفتوحة. قم بالتكرار على المجموعة للتبديل من النافذة الرئيسية إلى أي نافذة فرعية في التطبيق.
driver.getWindowHandle()
يعود أ String باستخدام المعرّف الفريد للنافذة الحالية. التقط هذا المعرّف قبل فتح أي نافذة فرعية حتى تتمكن من العودة إلى النافذة الرئيسية لاحقًا.
اتبع هذه الخطوات لتوضيح كيفية التعامل مع النوافذ باستخدام Guru99 عرض توضيحي للنافذة المنبثقة.
مثال عملي: تبديل النوافذ
الخطوة 1) قم بتشغيل المتصفح وافتحه https://demo.guru99.com/popup.php.
الخطوة 2) انقر على اضغط هنا رابط. تفتح نافذة فرعية جديدة.
الخطوة 3) تطلب نافذة البرنامج الفرعي من المستخدم إدخال معرف البريد الإلكتروني ثم إرساله.
الخطوة 4) أدخل عنوان البريد الإلكتروني ثم أرسل.
الخطوة 5) تعرض الصفحة بيانات اعتماد الوصول التي تم إرجاعها بواسطة العرض التوضيحي.
بعد عرض بيانات الاعتماد:
- أغلق نافذة الطفل.
- أعد التركيز إلى النافذة الرئيسية.
Selenium Java Codeالتعامل مع عدة مهام Windows
import java.util.Iterator;
import java.util.Set;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class WindowHandle_Demo {
public static void main(String[] args) throws InterruptedException {
// Selenium 4 auto-resolves the browser driver via Selenium Manager
WebDriver driver = new FirefoxDriver();
driver.get("https://demo.guru99.com/popup.php");
driver.manage().window().maximize();
driver.findElement(By.xpath("//*[contains(@href,'popup.php')]")).click();
String mainWindow = driver.getWindowHandle();
// Capture every open window handle
Set<String> allWindows = driver.getWindowHandles();
Iterator<String> iterator = allWindows.iterator();
while (iterator.hasNext()) {
String childWindow = iterator.next();
if (!mainWindow.equalsIgnoreCase(childWindow)) {
// Switch to the child window
driver.switchTo().window(childWindow);
driver.findElement(By.name("emailid")).sendKeys("gaurav.3n@gmail.com");
driver.findElement(By.name("btnLogin")).click();
// Close the child window
driver.close();
}
}
// Return focus to the main window
driver.switchTo().window(mainWindow);
driver.quit();
}
}
الإخراج: إطلاق الموقع، اضغط هنا يفتح الرابط علامة تبويب فرعية، Selenium يدخل البريد الإلكتروني ويرسله، ثم يغلق النافذة الفرعية، ويعود إلى النافذة الرئيسية.
خاتمة
- حدد الثلاثة Selenium أنواع التنبيهات - بسيطة، وفورية، وتأكيدية - مع لقطة شاشة لكل منها.
- تم توضيح كيفية التعامل مع التنبيهات باستخدام WebDriver
Alertواجهة تستخدم سيناريو حذف عميل فعال. - تمت معالجة نوافذ المتصفح المتعددة عن طريق التقاط المقابض باستخدام
getWindowHandle()وgetWindowHandles()والتبديل بينهما.















