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

1430

Bài viết được sự cho phép của tác giả Tô Thị Vân Anh

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.

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

Để giải quyết vấn đề này, chúng ta có hai cách như dưới đây là những cách mà mình tổng hợp được, các bạn có thể tham khảo và nếu có thêm cách nào khác thì vui lòng chia sẻ cho mình và các bạn khác nữa nhé! 😀

  JavaScript Executor trong Selenium Webdriver
  Làm quen: Tóm tắt cơ bản về Selenium

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

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

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 qua các bước mình đã đề cập ở bài viết này nhé!

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:SeleniumAutoItFilesExecutableFilesHandleAuth.exe");
driver.findElement
loginpage.setEmail(email);
loginpage.setPassword(password);
loginpage.clickOnLogin();
}

Bài viết gốc được đăng tải tại vananhtooo.wordpress.com

Có thể bạn quan tâm:

Xem thêm Việc làm Developer hấp dẫn trên TopDev