Selenium
Duy Văn | 25/03/2025
Selenium là một tập hợp các công cụ kiểm thử tự động khá mạnh, và open source nhắm chủ yếu vào tự động hoá trình duyệt web, mô phỏng lại tương tác của người dùng lên trang web. Cho đến bây giờ thì Selenium vẫn là công cụ phổ biến nhất trong lĩnh vực kiểm thử tự động web vì nó ra đời từ lâu và có nhiều senior trong ngành đã quen với sử dụng selenium
Khởi đầu của Selenium được tạo ra bởi Jason Huggins vào 2004, anh này tạo ra một module JavaScript để tự động hoá một trang web khi làm dự án với ThoughtWorks. Module này thực thi các script JS trên trình duyệt và tự động hoá, dây chính là Selenium Core.
Sau đó, Paul Hammant và Jeremy D. Creighton đã phát triển Selenium RC (Remote Control) để giải quyết vấn đề về cách thức thực thi script trên trình duyệt, Selenium RC sử dụng server để thực thi script trên trình duyệt, đồng thời cho phép người dùng viết code bằng ngôn ngữ họ muốn
Tới 2006, Shinya Kastani tạo ra Selenium IDE, đây là một công cụ để ghi lại và chạy các test case trên trình duyệt, nó giúp cho người dùng không cần phải viết code mà vẫn có thể tạo ra các test case
Tới 2007 Simon Steward tạo ra WebDriver, đây chính là WebDriver huyền thoại mà chúng ta sử dụng ngày nay, khả năng của WebDriver là tương tác với trình duyệt một cách nhanh chóng và hiệu quả hơn so với Selenium RC
2008 Philippe Hanrigou tạo ra Selenium Grid, đây là công cụ để kiểm soát và quản lý các test case chạy trên nhiều trình duyệt và nhiều máy khác nhau
Sau đó từ 2011, Selenium WebDriver trở thành trọng tâm phát triển chính, sau đó lần lượt là Selenium 2, Selenium 3 và hiện tại là Selenium 4 với chuẩn W3C
Selenium WebDriver
WebDriver là cái mà chúng ta nghe đến nhiều nhất, bản chất của nó cho phép người dùng viết code ở ngôn ngữ mà họ muốn và tương tác với trình duyệt mà họ chọn thông qua các WebDriver cụ thể cho từng dòng trình duyệt
Web Driver hoạt động ở tầng OS và sử dụng giao thức tên là JSONWireProtocol, tức là nó sẽ gửi các request HTTP tới trình duyệt thông qua HTTP server mà trình duyệt cung cấp
Selenium tuy nhiên bị giới hạn ở việc tương tác với trình duyệt, nó không thể tương tác với các ứng dụng desktop, mobile, API, v.v… Selenium cũng không hỗ trợ assertion và validition mà cần phải được thực hiện với các thư viện kiểm thử như JUnit, Pytest, TestNG, v.v… Nó cũng không có built-in report vì bản thân nó không thực hiện kiểm thử mà chỉ tương tác với trình duyệt, report sẽ được thực hiện bởi các thư viện như Allure khi làm việc với thư viện kiểm thử đi kèm
Chúng ta dùng WebDriver khi nào:
- Khi muốn thực hiện tự động hoá trình duyệt web với ngôn ngữ lập trình mà mình chọn
- Khi muốn thực hiện kiểm thử với nhiều trình duyệt khác nhau, trên các máy khác nhau, hệ điều hành khác nhau khi kết hợp với Selenium Grid
- Khi muốn test web apps trên CI/CD