← Về trang Blog
Automation Test

Cập nhật tự động Browser Driver trên Selenium 4.6

admin· Đăng ngày 30 tháng 6, 2025
Cập nhật tự động Browser Driver trên Selenium 4.6

Sáng thứ Hai, bộ test automation vốn xanh mướt suốt nhiều tháng bỗng đỏ rực toàn bộ. Không một dòng code test nào thay đổi. Thủ phạm chỉ là một bản cập nhật Chrome âm thầm chạy qua đêm — và đột nhiên không một phiên trình duyệt nào khởi tạo được nữa.

Dòng lỗi quen thuộc đập vào mắt: SessionNotCreatedException kèm thông báo ChromeDriver chỉ hỗ trợ Chrome version 114 trong khi trình duyệt thực tế đã nhảy lên 125. Đây là một trong những lỗi gây mất thời gian bậc nhất với Automation Engineer: nó không nằm ở logic test, mà ở chỗ phiên bản driver và phiên bản browser lệch nhau. Mỗi lần Chrome tự cập nhật, bạn lại phải săn đúng bản chromedriver tương ứng, tải về, thay file, sửa path — một vòng lặp bảo trì vô tận và dễ làm gãy pipeline CI vào đúng lúc tệ nhất.

Trong bài viết này, bạn sẽ nắm được:

  • Vì sao lỗi SessionNotCreatedException xuất hiện và cơ chế gốc rễ của nó.
  • Selenium Manager là gì và nó giải quyết bài toán lệch phiên bản như thế nào.
  • Quy trình từng bước để gỡ bỏ cách quản lý driver thủ công và chuyển sang tự động.
  • Cách kiểm tra driver mà Selenium đã tự tải về trên máy của bạn.

Lỗi SessionNotCreatedException đến từ đâu?

Trong quá trình phát triển test automation với Selenium, hầu như Automation Engineer (AE) nào cũng từng gặp dòng lỗi này:

org.openqa.selenium.SessionNotCreatedException: Could not start a new session.
Message: session not created: This version of ChromeDriver only supports Chrome version 114.
Current browser version is 125.0.6422.60

Bản chất rất đơn giản: ChromeDriver là cây cầu giữa script Selenium và trình duyệt Chrome, và mỗi phiên bản ChromeDriver chỉ "nói chuyện" được với một phiên bản Chrome tương ứng. Khi Chrome tự cập nhật lên 125 nhưng driver vẫn dừng ở 114, cây cầu đứt — Selenium không thể mở được phiên làm việc, và toàn bộ test thất bại ngay từ bước khởi tạo.

Vậy fix nó như thế nào?

Từ Selenium 4.6, vấn đề này có một lời giải chính thức và gọn gàng: Selenium Manager. Thay vì tự đi tìm và duy trì driver, bạn để Selenium làm việc đó. Dưới đây là quy trình triển khai.

1. Cập nhật Selenium và cấu hình pom.xml

Đầu tiên, nâng phiên bản Selenium trong pom.xml lên bản có Selenium Manager (4.6 trở lên):

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

2. So sánh cách khởi tạo WebDriver

Điểm khác biệt lớn nhất nằm ở đoạn code khởi tạo driver. Hãy nhìn hai cách dưới đây.

Cách cũ — cấu hình driver thủ công. Trước đây, để cấu hình driver bạn thường trỏ tĩnh đường dẫn tới file chromedriver, hoặc nâng cấp hơn là dùng thư viện WebDriverManager để setup. Cách này khá phức tạp và bắt buộc phải thêm thư viện thứ ba vào pom.xml:

@Test
public void Login_DemoQA_001() {
    String chromeDriverPath = "src/test/resources/driver/chromedriver";
    System.setProperty("webdriver.chrome.driver", chromeDriverPath);
    WebDriverManager.getInstance(DriverManagerType.CHROME).setup();

    // Dùng WebDriverManager
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("--max-window-size");
    chromeOptions.addArguments("--remote-allow-origins=*");
    WebDriver webDriver = new ChromeDriver();
}

Cách mới — tối ưu với Selenium Manager. Từ Selenium 4.6, Selenium Manager ra đời và tự lo toàn bộ việc quản lý cũng như tải driver tương ứng với trình duyệt hiện tại. Bạn chỉ cần làm hai bước:

  1. Gỡ bỏ toàn bộ cấu hình driver cũ (set path tĩnh, WebDriverManager…).
  2. Copy đoạn code khởi tạo gọn nhẹ dưới đây vào project của bạn.
@Test
public void Login_DemoQA_001() {
    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.addArguments("--start-maximized");
    chromeOptions.addArguments("--remote-allow-origins=*");

    WebDriver mWebDriver = new ChromeDriver(chromeOptions);
    mWebDriver.get("https://demoqa.com/text-box");
}

👉 Không cần cài chromedriver thủ công hay phụ thuộc vào thư viện thứ ba.

👉 Nên đặt đoạn khởi tạo trong @BeforeMethod (TestNG) hoặc tương đương với JUnit để tái sử dụng và bảo trì dễ hơn.

So sánh hai cách quản lý driver

Tiêu chíQuản lý thủ công (path tĩnh / WebDriverManager)Selenium Manager (4.6+)
Tải driverTự tải đúng bản, hoặc dựa vào thư viện thứ baTự động tải đúng bản khớp với browser hiện tại
Thư viện phụ thuộcPhải thêm WebDriverManager vào pom.xmlTích hợp sẵn trong Selenium, không cần thêm gì
Cấu hình PATH / set pathPhải đặt driver vào PATH hoặc trỏ đường dẫn thủ côngKhông cần
Khi Chrome tự cập nhậtDễ vỡ — phải thay driver thủ công, gãy CITự cập nhật driver tương ứng, suite vẫn xanh

3. Kiểm tra thư mục driver đã tải (macOS)

Selenium Manager lưu các driver đã tải vào cache cục bộ. Trên macOS, bạn có thể kiểm tra như sau:

cd ~/.cache/selenium
ls

Kết quả thường thấy:

chromedriver
resolution.properties
selenium-manager.json

File cấu hình selenium-manager.json cho bạn biết chính xác driver nào đã được giải quyết và khớp với phiên bản browser nào:

{
  "drivers": [
    {
      "driver_name": "chromedriver",
      "driver_version": "138.0.7204.49",
      "major_browser_version": "138"
    }
  ]
}

Kinh nghiệm thực chiến. Khi nghi ngờ driver bị lệch, hãy mở thẳng ~/.cache/selenium/selenium-manager.json để đối chiếu major_browser_version với phiên bản Chrome thực tế trên máy. Đây là cách nhanh nhất để xác nhận Selenium Manager đã giải quyết đúng driver — thay vì đoán mò hay xoá cache vô tội vạ.

Selenium Manager là gì?

  • Là trình quản lý driver chính thức đi kèm Selenium từ phiên bản 4.6 trở lên.
  • Tự động tải và cấu hình chromedriver, geckodriver… khớp với trình duyệt đang dùng.
  • Không cần đặt driver vào PATH, cũng không cần thư viện WebDriverManager nữa.

Kết luận

Lỗi SessionNotCreatedException không phải là một bug khó — nó chỉ là dấu hiệu cho thấy cách quản lý driver thủ công đã lỗi thời trong thời đại trình duyệt tự cập nhật liên tục. Bằng cách nâng Selenium lên 4.6+, gỡ bỏ mọi cấu hình driver cũ và giao việc cho Selenium Manager, bạn loại bỏ hẳn vòng lặp "Chrome update → suite đỏ → thay driver" và để đội test tập trung vào điều thực sự quan trọng: chất lượng kịch bản kiểm thử.

Bạn đã từng mất cả buổi sáng chỉ để vá lỗi lệch phiên bản driver? Hãy chia sẻ mẹo xử lý của bạn để cộng đồng Automation cùng đỡ vất vả hơn.