วิธีจัดการการแจ้งเตือนและป๊อปอัปใน 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 ไดรเวอร์เว็บ นำเสนอ 4 วิธีที่ครอบคลุมการโต้ตอบการแจ้งเตือนทุกรูปแบบ
- ยกเลิกเป็นโมฆะ () — คลิก ยกเลิก ปุ่ม
driver.switchTo().alert().dismiss();
- เป็นโมฆะยอมรับ () — คลิก OK ปุ่ม
driver.switchTo().alert().accept();
- สตริงgetText() — บันทึกข้อความแจ้งเตือน
driver.switchTo().alert().getText();
- เป็นโมฆะ sendKeys (สตริง stringToSend) — พิมพ์ข้อความลงในช่องข้อความแจ้งเตือน
driver.switchTo().alert().sendKeys("Text");
Eclipse ระบบเติมข้อความอัตโนมัติจะแสดงวิธีการแจ้งเตือนที่มีให้เลือกหลังจากพิมพ์ping alert. บนบรรทัดแก้ไข สลับจากหน้าต่างหลักไปยังการแจ้งเตือนได้ตลอดเวลาโดยใช้ Selenium's .switchTo() วิธี
ตัวอย่างการใช้งาน: ลบข้อมูลลูกค้าทดลองใช้
เรามาสร้างระบบอัตโนมัติสำหรับสถานการณ์ต่อไปนี้กัน เราจะใช้ Guruเว็บไซต์สาธิต 99 แห่งเพื่อแสดงให้เห็น 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();
}
}
Output: เบราว์เซอร์จะเปิดหน้า "ลบข้อมูลลูกค้า" ป้อนรหัสลูกค้า ยอมรับข้อความยืนยัน และลบข้อมูลออกจากแอปพลิเคชันสาธิต
วิธีรับมือกับป๊อปอัป Windows in Selenium ไดรเวอร์เว็บ
เมื่อระบบอัตโนมัติต้องทำงานข้ามหน้าต่างเบราว์เซอร์หลายหน้าต่าง การทดสอบจะต้องสลับโฟกัสระหว่างหน้าต่างเหล่านั้นและกลับไปยังหน้าต่างหลักหลังจากแต่ละการดำเนินการ Selenium WebDriver มีสองเมธอดที่ทำให้สิ่งนี้เป็นไปได้
driver.getWindowHandles()
ส่งคืน a Set<String> ของแฮนเดิลหน้าต่างที่เปิดอยู่ทุกบาน วนซ้ำชุดเพื่อสลับจากหน้าต่างหลักไปยังหน้าต่างย่อยใดๆ ในแอปพลิเคชัน
ไดร์เวอร์.getWindowHandle()
ส่งคืน a String โดยใช้แฮนเดิลเฉพาะของหน้าต่างปัจจุบัน บันทึกแฮนเดิลนี้ก่อนเปิดหน้าต่างย่อยใดๆ เพื่อให้คุณสามารถกลับไปยังหน้าต่างหลักได้ในภายหลัง
ทำตามขั้นตอนเหล่านี้เพื่อสาธิตการจัดการหน้าต่างกับ... Guruสาธิตป๊อปอัพ 99 รายการ
ตัวอย่างการใช้งาน: การสลับหน้าต่าง
ขั้นตอน 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();
}
}
Output: เว็บไซต์เปิดตัวแล้ว คลิกที่นี่ ลิงก์นี้จะเปิดแท็บย่อย Selenium ป้อนอีเมลและกดส่ง ปิดหน้าต่างย่อย และกลับไปยังหน้าต่างหลัก
สรุป
- กำหนดทั้งสาม Selenium ประเภทของการแจ้งเตือน — แบบง่าย แบบแจ้งเตือนทันที และแบบยืนยัน — พร้อมภาพหน้าจอประกอบแต่ละประเภท
- สาธิตการจัดการการแจ้งเตือนด้วย WebDriver
Alertอินเทอร์เฟซที่ใช้สถานการณ์การลบลูกค้าที่ใช้งานได้จริง - จัดการหน้าต่างเบราว์เซอร์หลายหน้าต่างโดยการจับแฮนด์เดิลด้วย
getWindowHandle()และgetWindowHandles()และสลับไปมาระหว่างสิ่งเหล่านั้น















