Xử lý Alerts trong Selenium Webdriver

Khi truy cập vào một trang website thỉnh thoảng bạn sẽ gặp message box nhỏ, bắt buộc bạn phải click button có ở message box đó thì nó sẽ biến mất. Vậy thì message box đó là gì? Đó chính là alert! Hôm nay mình sẽ hướng dẫn bạn cách xử lý alert trong Selenium webdriver.

I. Alerts là gì?

Alert là một dạng message box nhỏ hiển thị trên màn hình. Nó cung cấp một số thông tin cần thiết cho người dùng hoặc bắt người dùng thực hiện một số thao tác nào đó. Ngoài ra nó còn được sử dụng cho mục đích cảnh báo người dùng. Ví dụ khi yêu cầu xác nhận hủy bỏ một hành động nào đó thì hiển thị alert. Dưới đây là một số loại alert thường gặp:

  1. Alert Dialog Box

Alert sử dụng để hiển thị một số thông tin hoặc cảnh báo trên màn hình. Ví dụ với một trường bắt buộc nhập các ký tự nhưng bạn không thực hiện nhập vào. Ở đây bạn có thể sử dụng alert để đưa ra thông tin cảnh báo.

  1. Prompt Alert.

Đây là loại alert yêu cầu người dùng nhập thông tin. Người dùng thực hiện nhập thông tin vào textbox có trong alert và ấn nút bất kỳ button nào có trên alert, button OK chẳng hạn.

  1. Confirmation Alert.

Loại alert này thực hiện xác nhận yêu cầu cho phép thực hiện một số loại hoạt động như đồng ý hay hủy bỏ.

II. Cách xử lý Alert trong Selenium webdriver

Trước hết chúng ta phải import gói:

org.openqa.selenium.Alert

Để mở được alert thì chúng ta phải thực hiện câu lệnh sau:

Alert alert = driver.switchTo().alert();

Bên cạnh đó, Selenium đã cung cấp cho chúng ta một số phương thức để làm việc với alert như sau:

  1. dissmiss() – Để thực hiện click vào button Cancel trong alert.
driver.switchTo().alert().dismiss();
  1. accept() – Để thực hiện click OK.
driver.switchTo().alert().accept();
  1. getText() – Để lấy ra nội dung trong alert.
driver.switchTo().alert().getText();
  1. sendKey(String text) – Để truyền dữ liệu vào arlert
driver.switchTo().alert().sendKeys("Text");

III. Demo

Bây giờ mình sẽ làm một demo nhỏ thực hiện một số thao tác với selenium. Kịch bản như sau:

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.NoAlertPresentException;

public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.setProperty("webdriver.chrome.driver", "C:\\Users\\Downloads\\chromedriver.exe");
		WebDriver driver = new ChromeDriver();		
		//mở trang web
		driver.get("http://demo.guru99.com/test/delete_customer.php");					
	    //click vào button [submit])				
        driver.findElement(By.name("submit")).submit();			       		
        // Switching to Alert        
        Alert alert = driver.switchTo().alert();		       		
        // Lấy nội dung alert 
        String alertMessage= driver.switchTo().alert().getText();		       		
        // Hiển thị nội dung alert	
        System.out.println(alertMessage);	
        try {
			Thread.sleep(5000);
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}        
        //Thực hiện nhấn nút OK
        driver.switchTo().alert().accept();     	
	}

}

Đây là link demo của mình cho các bạn tham khảo:

https://drive.google.com/file/d/1JuzVuPgs_f1QVf1dBZJrBtc8GI_vj8Ke/view

Tài liệu tham khảo:

https://www.tutorialspoint.com/javascript/javascript_dialog_boxes https://www.softwaretestingmaterial.com/javascript-alerts-popups-selenium/ https://www.guru99.com/alert-popup-handling-selenium.html