Giới thiệu về Selenium WebDriver – Selenium Tutorial #8

Trong các bài trước, chúng ta tập trung vào Selenium IDE và các khía cạnh khác nhau của nó. Chúng ta đã tìm hiểu công cụ và thảo luận về các tính năng của nó. Chúng ta cũng đã xây dựng một vài tập lệnh sử dụng Selenium IDE và Firebug; từ đó chuyển sang các loại yếu tố web khả dụng khác nhau và chiến lược định vị của chúng.

Giờ khi đã thành thạo với Selenium IDE, chúng ta sẽ chuyển hướng học tập của mình sang việc tạo ra các kịch bản tự động hóa tiên tiến hơn bằng Selenium WebDriver - là một trong những công cụ kiểm tra tự động hấp dẫn nhất. Sau đây hãy cùng nhau thảo luận chi tiết bạn nhé.

Tổng quan về Selenium WebDriver

WebDriver là một trong những công cụ mạnh mẽ và phổ biến nhất của bộ công cụ Selenium. WebDriver là phiên bản mở rộng của Selenium RC với những ưu điểm vượt trội và giải quyết được nhiều hạn chế của Selenium RC. WebDriver mở rộng hỗ trợ cho nhiều trình duyệt và nền tảng mới nhất, không giống như Selenium IDE. WebDriver cũng không yêu cầu máy chủ Selenium phải được khởi động trước khi thực thi các tập lệnh thử nghiệm, không giống như Selenium RC.

Selenium RC kết hợp với API WebDriver tạo thành Selenium 2.0. Selenium đã được phát triển để hỗ trợ các trang web động và các cuộc gọi Ajax. Nó cũng hỗ trợ các trình điều khiển khác nhau để thực hiện kiểm thử mobile dựa trên web.

Kiến trúc của WebDriver

WebDriver là một công cụ kiểm thử dựa trên web với sự khác biệt tinh tế so với Selenium RC : WebDriver được xây dựng trên nền tảng cơ bản của một máy khách (client) độc lập được tạo cho mỗi trình duyệt web; không yêu cầu JavaScript nặng.

WebDriver thực hiện các cuộc gọi trực tiếp đến trình duyệt Web và toàn bộ tập lệnh kiểm thử được thực hiện theo kiểu này. WebDriver sử dụng được với các trình duyệt có hỗ trợ và có khả năng tự động hóa (automation).

Khác với Selenium RC, Selenium WebDriver về cơ bản không yêu cầu Selenium Server phải được khởi động trước khi khởi chạy thực thi tập lệnh kiểm thử. Người dùng có thể tận dụng tiện ích này để có thể yêu cầu hoặc không Selenium Server khi họ đang thực hiện kiểm thử trên cùng một máy nơi trình duyệt đang cư trú (cùng 1 client).

Một số trường hợp đặc biệt cần yêu cầu Selenium Server cho WebDriver:

  • Khi người dùng muốn thực thi các kịch bản kiểm thử trên máy từ xa (remote machine).
  • Khi người dùng muốn thực thi các kịch bản kiểm thử trên HtmlUnit Driver.
  • Khi người dùng muốn thực thi các kịch bản kiểm thử trên nhiều nền tảng.

WebDriver là một framework hướng đối tượng hoàn toàn, hoạt động trên tầng OS (tầng hệ điều hành). Nó sử dụng khả năng tương thích tự nhiên của trình duyệt để tự động hóa mà không cần sử dụng bất kỳ thực thể ngoại vi nào. Với nhu cầu ngày càng tăng, WebDriver đã trở nên rất phổ biến, cơ sở người dùng lớn và cho đến nay đã trở thành một trong những công cụ kiểm thử tự động hóa nguồn mở được sử dụng rộng rãi nhất.

Các tính năng của Selenium WebDriver

Tính tương thích của trình duyệt web (Browser Compatibility)

WebDriver hỗ trợ một loạt các trình duyệt web và phiên bản của chúng. Khác với Selenium RC và Selenium IDE, WebDriver hỗ trợ tất cả các trình duyệt thông thường, ngoài ra còn có một số trình duyệt độc đáo và hiếm như trình duyệt HtmlUnit.

Trình duyệt HtmlUnit thực thi các tập lệnh kiểm thử tương tự các trình duyệt khác ngoại trừ thực tế là nó chạy ở chế độ không đầu (headless), tức là chế độ không có GUI và người dùng không thể xem/quan sát quá trình thực thi tập lệnh kiểm thử. Vì việc thực thi tập lệnh thử nghiệm xảy ra ở chế độ không đầu, do đó tốc độ thực thi sẽ rất nhanh chóng.

WebDriver cũng hỗ trợ kiểm thử mobile dựa trên web. Nó cung cấp AndroidDriver và IphoneDriver để sao lưu kiểm thử mobile dựa trên web.

Ngôn ngữ hỗ trợ (Language Support)

Trong các bài trước chúng ta đã học cách tạo tập lệnh bằng chức năng ghi và phát lại, cách tạo chúng bằng tay bằng cách sử dụng các câu lệnh Selenese. Trong khi tạo các kịch bản thử nghiệm như vậy, chúng ta sẽ gặp phải 1 số khó khăn hạn chế. Chẳng hạn như dưới đây.

Một số hạn chế trong Selenium IDE:

  • Không hỗ trợ các câu lệnh lặp đi lặp lại (iteration) và các câu lệnh co điều kiện.
  • Không hỗ trợ vòng lặp (loop).
  • Không hỗ trợ xử lý lỗi.
  • Không hỗ trợ tập lệnh kiểm tra phụ thuộc.

Các trở ngại trên có thể gây rắc rối trong chương trình. Để cải thiện điều này, WebDriver tạo điều kiện cho người dùng lựa chọn một trong các ngôn ngữ lập trình khác nhau và từ đó xây dựng tập lệnh thử nghiệm của họ bằng ngôn ngữ được chỉ định.

Các ngôn ngữ lập trình được Selenium WebDriver hỗ trợ:

  • Java
  • C#
  • PHP
  • Pearl
  • Ruby
  • Python

Do đó, người dùng có thể chọn bất kỳ một ngôn ngữ lập trình nào (miễn là ngôn ngữ được WebDriver hỗ trợ) dựa trên năng lực của họ và có thể bắt đầu xây dựng các kịch bản thử nghiệm.

Tốc độ (Speed)

Khi so sánh với các công cụ khác của bộ Selenium, WebDriver là công cụ nhanh nhất trong số tất cả. WebDriver tận dụng khả năng tương thích tự nhiên của trình duyệt đối với tự động hóa; do vậy thông tin liên lạc không cần thông qua bất kỳ can thiệp bên ngoài nào, thay vào đó WebDriver giao tiếp trực tiếp với trình duyệt giống như bất kỳ người dùng nào.

Các công cụ khác từ bộ Selenium ví dụ như Selenium RC không giao tiếp trực tiếp với trình duyệt web. Các thư viện máy khách (tập lệnh kiểm thử được viết bằng bất kỳ ngôn ngữ lập trình nào) giao tiếp với Selenium Remote Control Server, Remote Control giao tiếp với một Selenium Core (JavaScript Program) để từ đó giao tiếp với trình duyệt web. Do đó, loại kết quả truyền thông xoắn này là một trở ngại về tốc độ thực hiện.

Drivers, Methods and Classes

WebDriver cung cấp một loạt các giải pháp cho một số thách thức tiềm ẩn trong Kiểm thử tự động. Nó giúp chúng ta xử lý các loại yếu tố web phức tạp như checkbox, dropdown, cảnh báo (alert) ... với sự trợ giúp của các công cụ tìm kiếm động.

Với sự ra đời của kỷ nguyên di động, API WebDriver cũng đã trưởng thành và giới thiệu một số công nghệ chính (chìa khóa) để đi vào chân trời này. WebDriver cho phép người dùng thực hiện kiểm thử di động dựa trên web. Nó cung cấp hai trình điều khiển cần thiết để thực hiện kiểm thử di động dựa trên web:

  • AndriodDriver (dùng cho mobile dòng Android)
  • IphoneDriver (dùng cho mobile dòng iOS)

Hơn nữa, API WebDriver khá đơn giản và dễ sử dụng. Nó không bao gồm các lệnh lặp đi lặp lại. Ngược lại, Selenium RC là hiện thân của nhiều câu lệnh tautological (tautological - một công thức hoặc khẳng định luôn đúng trong mọi giải thích có thể : "x = y or x ≠ y". Ví dụ : "Quả bóng toàn màu đỏ hoặc quả bóng không phải là màu đỏ". Điều này luôn đúng bất kể màu của quả bóng.)

Kết luận

Trong hướng dẫn này, tác giả đã cố gắng làm cho bạn quen với Selenium WebDriver bằng cách phác thảo kiến trúc, tính năng và giới hạn của nó.

Dưới đây là các điểm chính của bài viết này:

  • Bộ Selenium bao gồm 4 thành phần cơ bản : Selenium IDE, Selenium RC, WebDriver, Selenium Grid.
  • WebDriver cho phép người dùng thực hiện kiểm thử tự động dựa trên web. WebDriver là một công cụ khác hoàn toàn và có những ưu điểm vượt trội so với Selenium RC.
  • WebDriver hỗ trợ nhiều trình duyệt web, ngôn ngữ lập trình và môi trường kiểm thử.
  • WebDriver giao tiếp trực tiếp với trình duyệt web và sử dụng khả năng tương thích riêng của trình duyệt để kiểm thử tự động.
  • Khả năng hỗ trợ của WebDriver không chỉ giới hạn trong các hoạt động ngoại vi của người dùng truyền thống. Thay vào đó, nó còn hỗ trợ các cơ chế xử lý hiệu quả cho các hành động phức tạp của người dùng như xử lý dropdown, gọi Ajax, chuyển đổi giữa các cửa sổ, điều hướng, xử lý cảnh báo, v.v.
  • WebDriver cho phép người dùng thực hiện kiểm thử mobile dựa trên web. Để hỗ trợ tương tự, WebDriver giới thiệu AndroidDriver và IphoneDriver.
  • WebDriver nhanh hơn các công cụ khác của Selenium Suite vì nó thực hiện cuộc gọi trực tiếp tới trình duyệt mà không cần bất kỳ sự can thiệp nào từ bên ngoài.

Bài dịch trên có thể còn có sai sót, nếu bạn quan tâm có thể xem bài viết gốc tại đây : https://www.softwaretestinghelp.com/selenium-webdriver-selenium-tutorial-8/

Cảm ơn bạn đã theo dõi và hẹn gặp lại ở bài sau 😃