SF

""

Xử lý Authentication Popup Window sử dụng Selenium WebDriver

Xử lý Authentication Popup Window sử dụng Selenium WebDriver


Bạn có thể gặp Authentication popup này khi thực hiện truy cập vào một trang ứng dụng hay địa chỉ nào đó, ở đây bạn cần phải nhập tên đăng nhập và mật khẩu đúng để có thể thực hiện tiếp các thao tác, tác vụ tiếp theo trên trang đó. Loại popup này không phải là popup thông thường được sinh ra từ java-script của ứng dụng đó, mà là một loại hộp thoại của trình duyệt, do đó mà Selenium không thể thực hiện với cách mà chúng ta vẫn làm là sử dụng sendKey() được.

Auth_popup_1

Để giải quyết vấn đề này, chúng ta có hai cách như dưới đâ.

1. Sử dụng Selenium webdriver

Cách đơn giản nhất là truyền trực tiếp username và password cùng với đường dẫn trang web yêu cầu theo cú pháp:

http://Username:Password@SiteURL

Mình có ví dụ:

http://msanh:12121221@www.thichanbanhcuon.com.vn

Trong đó:

msanh là username của mình

12121221 là mật khẩu

Và trang web đăng nhập của mình ở đây là http://www.thichanbanhcuon.com.vn

Code thì sẽ như thế này:

String URL = "http://" + msanh + ":" + 12121221 + "@" + www.thichanbanhcuon.com.vn;
driver.get(URL);
Alert alert = driver.switchTo().alert();
alert.accept();

2. Sử dụng AutoIT

Auth_popup

Bằng cách sử dụng AutoIT ta cũng có thể xử lý được với trường hợp popup này như sau.

Nếu bạn chưa cài đặt AutoIT thì tham khảo thêm trên các nguồn có sẵn khác.

Nếu đã sẵn sàng rồi, thì chúng ta bắt đầu tạo một AutoIT script có nội dung cú pháp như dưới đây:

; To pass user name and password
WinWaitActive("Windows Security")
Send("admin")
Send("{TAB}")
Send("admin")
Send("{ENTER}")

Hoặc có thể viết gộp như này cũng được:

WinWaitActivate("Authentication Required","")
Send("rajkumar{TAB}myPassword{ENTER}")

Lưu lại và sau đó compile AutoIT script file này thành 1 file exe, lấy đường dẫn của file exe này rồi đưa vào code thôi:

public static void login(String email, String password) throws Exception{
driver.get(URL);

//Passing the AutoIt Script here
Runtime.getRuntime().exec("D:\\Selenium\\AutoItFiles\\ExecutableFiles\\HandleAuth.exe");
driver.findElement
loginpage.setEmail(email);
loginpage.setPassword(password);
loginpage.clickOnLogin();
}