Về cơ bản, Selenium WebDriver không phải là một công cụ kiểm thử tự động. Selenium WebDriver là một bộ thư viện (API) hỗ trợ cho việc thiết kế các kịch bản kiểm thử cho các ứng dụng Web dựa trên các ngôn ngữ lập trình như Python, C# hay Java [5].
Để thực thi một kịch bản kiểm thử ứng dụng Web, vấn đề đầu tiên chúng ta phải quan tâm chính là trình duyệt. Đối tượng WebDriver sẽ khởi tạo một trình duyệt tương ứng với cách mà chúng ta thiết lập trong mã nguồn. Đối tượng WebDriver có thể là các trình duyệt như FireFox, Internet Explorer, Chrome v.v. Đối tượng WebDriver cũng là đối tượng chính mà từ đó chúng ta có thể tương tác với các đối tượng UI có trên trang Web hiện hành.
Một số Selenium-WebDriver API được sử dụng để kết nối với ứng dụng Web và thực hiện các ca kiểm thử của ứng dụng Web đó, bao gồm:
API kết nối đến một trình duyệt Web: API Selenium này giúp kết nối đến một đối tượng trình duyệt Web. Câu lệnh kết nối đến một trình duyệt Web FireFox.
WebDriver firefoxDriver = new FirefoxDriver();
Sau khi thực hiện câu lệnh trên, trình duyệt FireFox sẽ được khởi động. Đối tượng firefoxDriver được sử dụng để điều khiển trình duyệt FireFox. Dưới đây
là một số phương thức được dùng để điều khiển trình duyệt.
Phương thức điều khiển trình duyệt truy cập tới địa chỉ Web. Câu lệnh sau thực hiện việc truy cập đến trang Web Google.
firefoxDriver.get("http://www.google.com");
Phương thức điểu khiển chuyển hướng trình duyệt. Câu lệnh sau sử dụng
phương thức navigate() để thực hiện chuyển hướng đến trang Web hoặc URL
được yêu cầu.
firefoxDriver.navigate.to(“http://www.gooogle.com”);
Và một số phương thức điều khiển khác như: phương thức đóng cửa sổ
hiện tại của trình duyệt Driver.close(), phương thức thoát khỏi trình duyệt
Driver.quit() được sử dụng để thoát khỏi trình duyệt và tất cả các cửa sổ đã mở.
API xác định vị trí các phần tử Web: Phương thức By được dùng để xác định
vị trí phần tử Web trên trang Web dựa vào một thuộc tính nào đó của phần tử Web. Một số các thuộc tính thường được sử dụng để xác định vị trí phần tử Web như: ClassName, Id, LinkText, Name, v.v.
- Xác định bằng ID (By ID): Nếu tìm được phần tử có ID phù hợp, kết quả sẽ trả về vị trí của phần tử có ID tương ứng; Nếu không tìm được phần tử nào có
ID phù hợp, sẽ xuất hiện ngoại lệ NoSuchElementException.
Cú pháp: Driver.findElement(By.id(“”)); // <input id=”txtTen”></input>
WebElement element=driver.findElement(By.id(“txtTen”));
Kết quả câu lệnh trên trả về vị trí phần tử Web có ID = txtTen.
- Để xác định vị trí phần tử Web theo các thuộc tính còn lại, chúng ta thực hiện tương tự như trên.
Thao tác với các phần tử Web: Sau khi Selenium xác định được vị trí các phần tử Web. Chúng ta sẽ thực hiện các thao tác lên phần tử Web đó thông qua một số hàm được Selenium-WebDriver cung cấp nhằm thực hiện các thao tác chuột và bàn phím đối với phần tử Web.
[*]: http://jsoup.org/cookbook/
WebElement element = driver.findElement(By.name("GioiTinh"));
// Chọn ô Checkbox đầu tiên element.get(0).click();
Với những API thông dụng như đã kể ở trên, chúng ta dễ dàng kiểm thử trang Web bằng việc kết nối đến trang Web và tiến hành chạy các ca kiểm thử liên quan đến các phần tử Web trên trang Web đó.
Bằng cách sử dụng những API thông dụng như đã nêu ở trên và áp dụng cho các phần tử Web đã được định danh, Selenium dễ dàng kết nối đến trang Web cần kiểm thử và lấy các thông tin về các phần tử của trang Web, thao tác chuột và bàn phím lên các phần tử của trang Web đó. Như vậy, chỉ cần cung cấp các ca kiểm thử cho Selenium, Selenium sẽ thực thi hệ thống theo kịch bản kiểm thử tương ứng. Đối với những phần tử Web chưa được định danh rõ ràng thì chúng ta cần thêm sự hỗ trợ từ Jsoup để xác định các phần tử Web đó.