WebDriver

Giới thiệu Selenium WebDriver

Với Selenium IDE, chúng ta có thể tạo được các test case ở mức đơn giản với Record-Playback. Bằng cách sử dụng thêm các add-in bên ngoài, chúng ta có thể tiến hơn một bước trong việc sử dụng cấu trúc điều khiển để test case linh động hơn. Tuy nhiên, các add-in không thực sự mạnh trong điều khiển workflow của test case. Để bù đắp việc này, Selenium cung cấp cho chúng ta hai loại thư viện để sử dụng mã nguồn của Selenium khi tương tác với ứng dụng Web: Selenium Remote Control (Selenium RC) và Selenium WebDriver (Selenium 2).

Về cơ bản thì cả hai loại Selenium này đều cho phép chúng ta sử dụng các ngôn ngữ lập trình – Java; .Net; PHP; Python; Perl; Ruby – để thiết kế test case. Tuy nhiên, về cá nhân thì mình thích bạn Selenium WebDriver hơn bạn Selenium RC. Đơn giản vì cái nào ra sau sẽ mạnh mẽ hơn cái trước 🙂

 Selenium WebDriver

Đùa thôi, nghiêm túc mà nói thì mình nhận thấy Selenium WebDriver có các thế mạnh so với Selenium RC như sau:

Kiến trúc

Kiến trúc của Selenium WebDriver đơn giản hơn rất nhiều so với Selenium RC. Selenium WebDriver làm việc trực tiếp với trình duyệt ở mức độ hệ điều hành trong khi Selenium RC làm việc với trình duyệt thông qua một hệ thống Server ảo – Selenium Remote Control (RC) Server. Nó cứ như có một người trung gian để chuyển lệnh từ test case của mình lên trình duyệt vậy.

Selenium RC - WebdriverTốc độ

Tất nhiên, khi làm việc trực tiếp giữa hai người (Selenium WebDriver – trình duyệt) thì nó phải nhanh hơn làm việc thông qua người trung gian (Selenium RC – Selenium RC Server – trình duyệt) rồi hen.

Tương tác như đời thật

Với Selenium WebDriver, chúng ta không thể tương tác với các đồi tượng UI ẩn (hidden)/vô hiệu (disable) trong mã nguồn web. Ngược lại, với Selenium RC, chúng ta có thể làm mọi đồi tượng UI có trong mã nguồn, bất kể đồi tượng UI đó nó như thế nào trên UI. Điều này thực sự không tốt cho việc kiểm thử phần mềm vì nó bỏ qua các lỗi UI có thể có. Hơn nữa, trong đời thực, chúng ta không thể tương tác với các đồi tượng UI ẩn/vô hiệu.

Giao diện lập trình ứng dụng API – Application Programming Interface

Các APIs mà Selenium WebDriver cung cấp trong thư viện đơn giản hơn so với Selenium RC. Ví dụ như, với Selenium WebDriver, chúng ta chỉ có click; còn với Selenium RC, chúng ta có click, mouseDown, or mouseDownAt. Quá phức tạp phải không? Hơn nữa, khi sử dụng Selenium RC, chúng ta xác định hành động trước rối mới đền đối tượng UI (làm gì trên đối tượng nào); ngược lại, với Selenium WebDriver, chúng ta xác định đối tượng UI trước rồi mới nói đến làm gì trên nó (với đối tượng này chúng ta sẽ làm gì).

Bên cạnh đó, Selenium WebDriver không phải không có điểm yếu. Thứ mà mình không thích nhất của Selenium WebDriver đó là mã nguồn của nó không chạy trên Selenium Grid được. Cho nên, khi muốn thực thi test case với Selenium WebDriver trên nhiều trình duyệt khác nhau, chúng ta phải cấu hình bằng tay. Buồn là vậy….

Kiểm thử tự động