วิธีจัดการ Selenium การแจ้งเตือนและป๊อปอัป?
Alert มีอะไรบ้าง Selenium?
An แจ้งเตือนเข้า. Selenium เป็นกล่องข้อความขนาดเล็กที่ปรากฏบนหน้าจอเพื่อแจ้งข้อมูลหรือแจ้งเตือนผู้ใช้ โดยจะแจ้งข้อมูลเฉพาะหรือข้อผิดพลาดบางอย่างให้ผู้ใช้ทราบ ขออนุญาตดำเนินการบางอย่าง และยังแสดงข้อความเตือนด้วย
ในบทช่วยสอนนี้ เราจะได้เรียนรู้วิธีจัดการป๊อปอัป Selenium และการแจ้งเตือนประเภทต่างๆ ที่พบในเว็บแอปพลิเคชัน การทดสอบ- เราจะดูวิธีจัดการกับ Alert ด้วย Selenium WebDriver และเรียนรู้วิธีที่เราจะยอมรับและปฏิเสธการแจ้งเตือนโดยขึ้นอยู่กับประเภทการแจ้งเตือน
ประเภทของการแจ้งเตือนใน Selenium
1) Simple Alert
คลาสการแจ้งเตือนแบบง่ายใน Selenium แสดงข้อมูลหรือคำเตือนบางอย่างบนหน้าจอ
2) Prompt Alert
ลิ้มรส Prompt Alert ถามข้อมูลบางอย่างจากผู้ใช้และ Selenium webdriver สามารถป้อนข้อความโดยใช้ sendkeys(” input…. “)
3) Confirmation Alert
การแจ้งเตือนการยืนยันนี้ขออนุญาตในการดำเนินการบางประเภท
วิธีจัดการกับ Alert ใน Selenium ไดรเวอร์เว็บ
อินเทอร์เฟซการแจ้งเตือนมีวิธีการด้านล่างซึ่งใช้กันอย่างแพร่หลาย Selenium ไดรเวอร์เว็บ.
1) ยกเลิกเป็นโมฆะ () // หากต้องการคลิกที่ปุ่ม 'ยกเลิก' ของการแจ้งเตือน
driver.switchTo().alert().dismiss();
2) เป็นโมฆะยอมรับ ()// หากต้องการคลิกที่ปุ่ม 'ตกลง' ของการแจ้งเตือน
driver.switchTo().alert().accept();
3) สตริงgetText() // เพื่อบันทึกข้อความแจ้งเตือน
driver.switchTo().alert().getText();
4) เป็นโมฆะ sendKeys (สตริง stringToSend) // เพื่อส่งข้อมูลบางอย่างไปยังกล่องแจ้งเตือน
driver.switchTo().alert().sendKeys("Text");
คุณสามารถดูวิธีแจ้งเตือนจำนวนหนึ่งที่แสดงดังที่แสดงในหน้าจอด้านล่างซึ่งแนะนำโดย Eclipse.
เราสามารถเปลี่ยนการแจ้งเตือนจากหน้าต่างหลักได้อย่างง่ายดายโดยใช้ Selenium's .switchTo() วิธี
ตอนนี้เราทำสถานการณ์ที่กำหนดด้านล่างโดยอัตโนมัติ
ในสถานการณ์นี้ เราจะใช้ไซต์สาธิต Guru99 เพื่อแสดงตัวอย่าง Selenium การจัดการการแจ้งเตือน
ขั้นตอน 1) เปิดเว็บเบราว์เซอร์และเปิดไซต์ https://demo.guru99.com/test/delete_customer.php
ขั้นตอน 2) ป้อนรหัสลูกค้าใดๆ
ขั้นตอน 3) หลังจากกรอกรหัสลูกค้าแล้ว ให้คลิกที่ปุ่ม “ส่ง”
ขั้นตอน 4) ปฏิเสธ/ยอมรับการแจ้งเตือน
การจัดการการแจ้งเตือนใน Selenium ไดรเวอร์เว็บ
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 { System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); // Alert Message handling driver.get("https://demo.guru99.com/test/delete_customer.php"); driver.findElement(By.name("cusid")).sendKeys("53920"); driver.findElement(By.name("submit")).submit(); // Switching to Alert Alert alert = driver.switchTo().alert(); // Capturing alert message. String alertMessage= driver.switchTo().alert().getText(); // Displaying alert message System.out.println(alertMessage); Thread.sleep(5000); // Accepting alert alert.accept(); } }
Output:
เมื่อคุณรันโค้ดด้านบน เว็บไซต์จะเปิดขึ้น ให้ลองลบรหัสลูกค้าโดยจัดการกับการแจ้งเตือนยืนยันที่แสดงบนหน้าจอ และลบรหัสลูกค้าออกจากแอปพลิเคชัน
วิธีจัดการกับหน้าต่าง Pop-up โดยใช้ Selenium ไดรเวอร์เว็บ
ในระบบอัตโนมัติ เมื่อเรามีหน้าต่างหลายบานในแอปพลิเคชันบนเว็บ กิจกรรมอาจต้องสลับการควบคุมระหว่างหน้าต่างหลายบานจากหน้าต่างหนึ่งไปยังอีกหน้าต่างหนึ่งเพื่อดำเนินการให้เสร็จสมบูรณ์ หลังจากดำเนินการเสร็จสิ้นแล้ว จะต้องกลับไปที่หน้าต่างหลัก เช่น หน้าต่างหลักใน Selenium- เราจะเห็นสิ่งนี้เพิ่มเติมในบทความพร้อมตัวอย่าง
In Selenium ไดรเวอร์เว็บ มีวิธีการที่ช่วยให้เราจัดการกับหน้าต่างหลายหน้าต่างได้
ไดร์เวอร์.getWindowHandles();
ในการจัดการหน้าต่างที่เปิดทั้งหมดโดยใช้ไดรเวอร์เว็บ เราสามารถใช้ "Driver.getWindowHandles()" จากนั้นเราสามารถสลับหน้าต่างจากหน้าต่างหนึ่งไปยังอีกหน้าต่างหนึ่งในแอปพลิเคชันเว็บ ประเภทการส่งคืนคือ Iterator -
ไดร์เวอร์.getWindowHandle();
เมื่อไซต์เปิดขึ้น เราจะต้องจัดการหน้าต่างหลักด้วย ไดร์เวอร์.getWindowHandle()- ซึ่งจะจัดการกับหน้าต่างปัจจุบันที่ระบุโดยไม่ซ้ำกันภายในอินสแตนซ์ของไดรเวอร์นี้ ประเภทการส่งคืนของมันคือ String
สำหรับการจัดการหน้าต่างใน Seleniumเราจะทำตามขั้นตอนด้านล่าง:
ตอนนี้เราจะสร้างสถานการณ์ต่อไปนี้โดยอัตโนมัติ เพื่อดูวิธีการจัดการหน้าต่างหลายบานโดยใช้ Selenium เว็บไดรเวอร์
ในสถานการณ์นี้ เราจะใช้ไซต์สาธิต "Guru99" เพื่อแสดงการจัดการหน้าต่าง
ขั้นตอน 1) เปิดตัวเว็บไซต์
เปิดเบราว์เซอร์และเปิดไซต์ https://demo.guru99.com/popup.php
ขั้นตอน 2) คลิกที่ลิงค์ “คลิกที่นี่”
เมื่อผู้ใช้คลิกที่ลิงค์ ” คลิกที่นี่ ” หน้าต่างลูกใหม่จะเปิดขึ้น
ขั้นตอน 3) หน้าต่างลูกใหม่จะเปิดขึ้น
หน้าต่างใหม่จะเปิดขึ้น ขอให้ผู้ใช้ป้อนรหัสอีเมล์และส่งหน้า
ขั้นตอน 4) กรอกรหัสอีเมล์ของคุณและส่ง
ขั้นตอน 5) แสดงข้อมูลรับรองการเข้าถึงเมื่อส่งเพจ
เมื่อคุณรันโค้ด คุณจะเห็นหน้าต่างลูกเปิดอยู่ในแท็บใหม่
- ปิดหน้าต่างย่อยที่แสดงข้อมูลประจำตัว
- สลับไปที่หน้าต่างหลัก
วิธีจัดการกับหลายรายการ Windows in Selenium
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 { WebDriver driver=new FirefoxDriver(); //Launching the site. 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(); // To handle all new opened window. Set<String> s1=driver.getWindowHandles(); Iterator<String> i1=s1.iterator(); while(i1.hasNext()) { String ChildWindow=i1.next(); if(!MainWindow.equalsIgnoreCase(ChildWindow)) { // Switching to Child window driver.switchTo().window(ChildWindow); driver.findElement(By.name("emailid")) .sendKeys("gaurav.3n@gmail.com"); driver.findElement(By.name("btnLogin")).click(); // Closing the Child Window. driver.close(); } } // Switching to Parent window i.e Main Window. driver.switchTo().window(MainWindow); } }
Output:
เมื่อคุณรันโค้ดด้านบน เว็บไซต์จะเปิดขึ้น และเมื่อคลิกลิงก์ "คลิกที่นี่" หน้าต่างย่อยจะเปิดขึ้นในแท็บใหม่ คุณสามารถปิดหน้าต่างย่อยและสลับไปที่หน้าต่างหลักได้เมื่อดำเนินการเสร็จสิ้น ดังนั้นจึงสามารถจัดการหน้าต่างมากกว่าหนึ่งหน้าต่างในแอปพลิเคชันได้
สรุป
- เรากำหนดประเภทของการแจ้งเตือนและแสดงด้วยภาพหน้าจอ
- สาธิตการจัดการกับการแจ้งเตือนด้วย Selenium WebDriver ใช้สถานการณ์เฉพาะ
- จัดการหน้าต่างหลายบานด้วย Selenium WebDriver ใช้สถานการณ์เฉพาะ