Selenium - khái niệm cơ bản 2026

Selenium là gì?

Selenium là bộ công cụ mã nguồn mở (Open Source) dùng để tự động hóa trình duyệt web (Browser Automation). Nó được sử dụng rộng rãi nhất trong lĩnh vực Automation Testing cho ứng dụng web.

Đặc điểm nổi bật:

  • Miễn phí, cộng đồng sử dụng rất lớn trên toàn thế giới.
  • Hỗ trợ đa trình duyệt: Chrome, Firefox, Edge, Safari.
  • Hỗ trợ đa hệ điều hành: Windows, macOS, Linux.
  • Hỗ trợ đa ngôn ngữ lập trình: Java, Python, C#, JavaScript, Ruby, Kotlin.
  • Tích hợp dễ dàng với các framework: TestNG, JUnit, pytest, NUnit, Mocha...

Các thành phần của Selenium (2026)

Tính đến thời điểm hiện tại, Selenium gồm 4 thành phần chính:

1. Selenium WebDriver

Đây là thành phần cốt lõi và quan trọng nhất. WebDriver cho phép bạn viết code để điều khiển trình duyệt theo lập trình (programmatically).

Những thay đổi quan trọng trong Selenium 4:

  • W3C WebDriver Protocol: Selenium 4 sử dụng chuẩn W3C thay vì JSON Wire Protocol cũ. Điều này giúp giao tiếp giữa code và trình duyệt ổn định, nhất quán hơn rất nhiều.
  • Options thay cho DesiredCapabilities: Không còn dùng DesiredCapabilities, thay vào đó sử dụng ChromeOptions, FirefoxOptions, EdgeOptions... để cấu hình trình duyệt.
  • ChromeDriver kế thừa ChromiumDriver: Kiến trúc class rõ ràng hơn, ChromeDriver và EdgeDriver giờ cùng kế thừa từ ChromiumDriver.
// Selenium 3 (CŨ - không nên dùng nữa)
DesiredCapabilities caps = new DesiredCapabilities();
caps.setBrowserName("chrome");
WebDriver driver = new RemoteWebDriver(caps);

// Selenium 4 (MỚI - cách chuẩn hiện tại)
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(options);

2. Selenium IDE

Selenium IDE là công cụ Record & Playback cho phép ghi lại thao tác trên trình duyệt mà không cần viết code.

Có gì mới?

  • Selenium IDE đã được viết lại hoàn toàn, hiện là extension cho Chrome, FirefoxEdge.
  • Hỗ trợ control flow: if, else, while, times.
  • Có thể export test script sang nhiều ngôn ngữ (Java, Python, C#, JavaScript...).
  • Chạy test từ command line với selenium-side-runner (cần Node.js).
Lưu ý: Selenium IDE phù hợp để học và tạo test nhanh (prototype). Với dự án thực tế, bạn nên chuyển sang Selenium WebDriver để có khả năng tùy biến và bảo trì tốt hơn.

3. Selenium Grid

Selenium Grid cho phép bạn chạy test song song (parallel) trên nhiều máy, nhiều trình duyệt cùng lúc, giúp giảm đáng kể thời gian thực thi.

Grid trong Selenium 4 đã được thiết kế lại hoàn toàn:

  • Kiến trúc mới: Gộp Hub và Node vào một file JAR duy nhất; có thể chạy Standalone hoặc Distributed mode.
  • Hỗ trợ Docker & Kubernetes: Tích hợp native với Docker/K8s, dễ dàng deploy lên cloud.
  • Giao diện quản lý mới: UI trực quan hơn, xem được trạng thái node, session đang chạy, live preview.
  • Tối ưu parallel testing: Load balancing tốt hơn, phân phối test hiệu quả hơn.
# Chạy Grid Standalone (cách đơn giản nhất)
java -jar selenium-server-4.x.x.jar standalone

# Mở Grid UI tại: http://localhost:4444/ui

4. Selenium Manager

Đây là thành phần mới hoàn toàn trong Selenium 4 (không có trong bài viết cũ năm 2017).

  • Selenium Manager tự động tải và quản lý browser driver (chromedriver, geckodriver, msedgedriver...) phù hợp với version trình duyệt đang cài trên máy.
  • Bạn không cần tải driver thủ công hay sử dụng thư viện bên thứ 3 như WebDriverManager nữa.
  • Chỉ cần viết code và chạy — Selenium Manager sẽ lo phần còn lại.
Lưu ý quan trọng: Nếu bạn đọc tài liệu cũ (trước 2022), hầu hết sẽ hướng dẫn bạn tải chromedriver thủ công và đặt vào System PATH. Với Selenium 4 mới, bước này không còn cần thiết nữa.

Tính năng nổi bật của Selenium 4

Ngoài các thay đổi ở từng thành phần, Selenium 4 còn mang đến nhiều tính năng mạnh mẽ:

Relative Locators (Locator tương đối)

Cho phép tìm element dựa trên vị trí tương đối so với element khác, rất trực quan:

  • above() — phía trên
  • below() — phía dưới
  • toLeftOf() — bên trái
  • toRightOf() — bên phải
  • near() — gần
// Tìm element nằm bên dưới element có id="email"
WebElement password = driver.findElement(
    RelativeLocator.with(By.tagName("input")).below(By.id("email"))
);

Chrome DevTools Protocol (CDP)

Selenium 4 tích hợp native với CDP, mở ra nhiều khả năng nâng cao:

  • Giả lập mạng (Network emulation): test trên 3G, offline...
  • Giả lập vị trí địa lý (Geolocation)
  • Bắt console log, network request
  • Phân tích hiệu năng trang web (Performance metrics)

Quản lý Window/Tab mới

Mở tab hoặc window mới dễ dàng mà không cần tạo WebDriver object mới:

// Mở tab mới
driver.switchTo().newWindow(WindowType.TAB);

// Mở window mới
driver.switchTo().newWindow(WindowType.WINDOW);

So sánh nhanh: Selenium 3 vs Selenium 4

Tiêu chí Selenium 3 Selenium 4
Giao thức JSON Wire Protocol W3C WebDriver Protocol
Cấu hình browser DesiredCapabilities Browser Options (ChromeOptions...)
Driver management Thủ công hoặc WebDriverManager Selenium Manager (tự động)
Relative Locators Không có above(), below(), near()...
CDP Support Không có Tích hợp native
Selenium Grid Cấu hình phức tạp (Hub/Node riêng) Đơn giản, hỗ trợ Docker/K8s
Window/Tab management Phức tạp API newWindow(), newTab() đơn giản
Selenium IDE Chỉ Firefox, bị ngưng phát triển một thời gian Chrome, Firefox, Edge; viết lại hoàn toàn

Bắt đầu nhanh với Selenium 4 (Java)

Dưới đây là ví dụ đơn giản để bạn chạy thử ngay:

Bước 1: Thêm dependency (Maven)

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.33.0</version>
</dependency>

Bước 2: Viết test đầu tiên

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.By;

public class FirstTest {
    public static void main(String[] args) {
        // Selenium Manager tự động tải chromedriver - không cần setup thủ công!
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--start-maximized");

        WebDriver driver = new ChromeDriver(options);

        // Mở trang web
        driver.get("https://www.google.com");

        // Tìm ô search và nhập text
        driver.findElement(By.name("q")).sendKeys("Selenium WebDriver tutorial");

        // In ra title
        System.out.println("Page title: " + driver.getTitle());

        // Đóng trình duyệt
        driver.quit();
    }
}

Tài liệu tham khảo chính thức


Bài viết được cập nhật tháng 02/2026. Nếu bạn thấy thông tin nào đã lỗi thời, hãy để lại comment bên dưới nhé!

0 comments:

Post a Comment