TopGit
Đánh giá repo GitHub

Selenium: framework tự động hóa trình duyệt web

SeleniumHQ/selenium
STopGit review image for SeleniumHQ/selenium
Review by Topgit.dev for SeleniumHQ/selenium, with GitHub repository stats and README context.
Nhận định nhanh

Selenium là framework mã nguồn mở đứng sau đặc tả W3C WebDriver, cho phép mã viết bằng Java, Python, JavaScript, Ruby, C# và Rust dùng chung một giao diện để điều khiển Chrome, Firefox và Edge. Nên chọn Selenium khi cần kiểm soát phiên trình duyệt ở mức thấp, đa ngôn ngữ, chạy trong CI. Nên bỏ qua nếu chỉ muốn bắt đầu nhanh — repo này là tài liệu cho người đóng góp, không phải hướng dẫn nhập môn; phần đó nằm trong User Manual riêng.

Sao
★ 34.6k
Fork
⑂ 8.7k
Ngôn ngữ
Java
Giấy phép
Apache-2.0
Chủ đề
Automation
Cập nhật
Oct 2026
Trang chủ
GitHub

Hiểu mục đích cốt lõi của Selenium

Selenium là một umbrella project — tập hợp công cụ và thư viện, không phải một binary duy nhất — xây quanh đặc tả W3C WebDriver, giao thức trung lập về nền tảng và ngôn ngữ cho việc điều khiển trình duyệt thật. Theo README, Selenium do các contributor tình nguyện duy trì, gồm Grid để chạy phiên và client binding riêng cho từng ngôn ngữ. Cùng một khái niệm tự động hóa hoạt động dù viết bằng Java, Python, JavaScript, Ruby, C# hay Rust.

Các khía cạnh chính trong hệ sinh thái Selenium

  • ✓Triển khai đặc tả W3C WebDriver như một giao thức trung lập về nền tảng và ngôn ngữ, nên logic tự động hóa không bị khóa vào API riêng của một trình duyệt.
  • ✓Selenium Manager tự tìm trình duyệt và driver khi chạy test với cờ --pin_browsers=false, bỏ qua bước cấu hình đường dẫn driver thủ công.
  • ✓Cung cấp client binding riêng cho Java, Python, JavaScript, Ruby, C# và Rust — khớp với các topic tag của chính repo — mỗi ngôn ngữ có đường build riêng qua lệnh ./go <language>:build.
  • ✓Thành phần Grid được build như một target Bazel riêng (executable-grid), dùng để chạy phiên trên nhiều máy thay vì chỉ một trình duyệt local.
  • ✓Chế độ headless được tài liệu hóa cho Chrome, Edge và Firefox qua cờ test --headless, dùng để chạy tự động hóa không cần cửa sổ trình duyệt hiển thị.
  • ✓Test có thể được lọc theo kích thước — small (không mở trình duyệt), medium, và large (chạy đầy đủ trình duyệt) — để contributor chạy một tập nhỏ nhanh thay vì toàn bộ suite.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao ↗

Repo này dành cho ai

Repo GitHub cụ thể này dành cho người muốn build hoặc sửa lỗi chính Selenium, không phải cho developer chỉ muốn viết script điều khiển trình duyệt. Nếu bạn đang thiết lập toolchain Bazel để sửa lỗi trong Grid hay một binding ngôn ngữ, hoặc gửi pull request theo CONTRIBUTING.md, đây đúng là nơi cần đến. Nếu bạn chỉ muốn viết test trình duyệt dựa trên một bản Selenium đã phát hành, User Manual cùng gói Selenium theo ngôn ngữ của bạn là đường đi nhanh hơn — chính README của repo cũng nói vậy. Repo hiện có 34.349 star và 8.694 fork trên GitHub — con số này nói lên độ trưởng thành, không phải một lời khẳng định về chất lượng.

Thiết lập môi trường phát triển Selenium

Mọi nền tảng đều cần Bazelisk (một wrapper quản lý phiên bản Bazel) và Java JDK 17 trở lên, với biến JAVA_HOME trỏ vào JDK — không phải JRE. Trên macOS, cần thêm Xcode command-line tools, và trên Apple Silicon phải thêm cờ host-platform Rosetta vào file .bazelrc.local. Thiết lập trên Windows nặng hơn: hoặc chạy một script PowerShell dựng sẵn toàn bộ môi trường, hoặc đi theo đường thủ công qua MSYS2, gói C++ của Visual Studio, và vài thay đổi registry để hỗ trợ đường dẫn file dài — README dẫn tới một bài hướng dẫn cũ mà chính dự án gắn nhãn là đã lỗi thời. Nếu không muốn tự dựng môi trường local, repo hỗ trợ GitPod, Dev Container (qua devcontainer.json), hoặc một Docker image (scripts/dev-image/Dockerfile). Làm việc với nhiều git worktree cùng lúc là một điểm dễ vướng: cache disk và cache repository của Bazel được chia sẻ qua cờ --disk_cache/--repository_cache trong .bazelrc ở thư mục home, nhưng mỗi worktree vẫn có output base riêng trừ khi bạn trỏ --output_base vào bên trong worktree để nó tự dọn khi xóa.

Câu hỏi thường gặp về Selenium

Giấy phép của dự án Selenium là gì?

Selenium được cấp phép theo Apache-2.0, theo file license của repository, nên bạn có thể dùng và sửa đổi cho mục đích thương mại mà không phải chịu ràng buộc copyleft.

Selenium hỗ trợ những ngôn ngữ lập trình nào?

Các topic tag trên GitHub của Selenium liệt kê dotnet, java, javascript, python, ruby và rust, còn phần Developing trong README mô tả cụ thể các build cho Java, Python, Ruby và Rust.

Làm sao để đóng góp cho dự án Selenium?

Hãy đọc CONTRIBUTING.md trong repo SeleniumHQ/selenium trước khi gửi pull request; README cũng yêu cầu thiết lập đầy đủ môi trường phát triển Bazel trước.

Tìm user manual của Selenium ở đâu?

User Manual của Selenium nằm tại selenium.dev/documentation, tách biệt với README của repo GitHub này — chính đội ngũ dự án nói README được viết cho người đóng góp chứ không phải người dùng cuối.

Selenium dùng hệ thống build nào?

Selenium build bằng Bazel, được bọc qua lệnh ./go dựa trên Rake cho các tác vụ thường dùng như ./go java:install hay ./go py:local_dev.

Selenium có hỗ trợ test trình duyệt ở chế độ headless không?

Bộ test của Selenium có tài liệu về cờ --headless, được README của dự án ghi nhận là hoạt động với Chrome, Edge và Firefox.

Điểm mạnh

  • ✓Tuân theo W3C WebDriver nghĩa là logic tự động hóa di chuyển được qua lại giữa các trình duyệt, thay vì bị khóa vào API riêng của một hãng.
  • ✓Có client binding cho Java, Python, JavaScript, Ruby, C# và Rust, theo đúng các topic tag của repo — không chỉ giới hạn ở Java dù bản thân dự án được viết bằng Java.
  • ✓Giấy phép Apache-2.0, nên được dùng, sửa đổi và phân phối lại tự do mà không vướng ràng buộc copyleft.
  • ✓Selenium Manager (--pin_browsers=false) tự động hóa việc tìm trình duyệt và driver thay vì để bạn cấu hình thủ công.
  • ✓Có nhiều cách để có một môi trường phát triển hoạt động — tự thiết lập Bazel ở local, GitPod, Dev Container, hoặc một Docker image dựng sẵn — thay vì chỉ một con đường cài đặt trần trụi.

Hạn chế & rủi ro

  • △README trên GitHub chỉ tài liệu hóa việc build và đóng góp, không phải cách dùng hàng ngày — muốn viết test thực sự bạn cần User Manual riêng, vốn không nằm trong repo này.
  • △Toolchain phát triển khá nặng: Bazelisk, JDK 17 trở lên, và trên Windows còn thêm MSYS2 cùng gói C++ đầy đủ của Visual Studio — nhiều bước hơn hẳn so với chỉ clone rồi chạy một lệnh.
  • △Hướng dẫn Windows trong chính README dẫn tới một bài viết ngoài mà dự án tự gắn nhãn là đã lỗi thời.
  • △Cache disk và cache repository của Bazel phình to không giới hạn theo mô tả trong README, và việc dùng nhiều worktree sẽ để lại nhiều gigabyte output thừa nếu bạn không tự cấu hình output base riêng cho từng worktree.
  • △Bộ test có sẵn cờ --flaky_test_attempts 3 để chạy lại, cho thấy một số test điều khiển trình duyệt không phải lúc nào cũng ổn định ngay lần chạy đầu.

Lựa chọn thay thế

Playwright — thư viện tự động hóa đa trình duyệt mới hơn, dùng giao thức riêng (không theo WebDriver) và có cơ chế auto-wait sẵn, phù hợp nếu bạn không bị ràng buộc vào chuẩn WebDriver. ↗cypress — công cụ test end-to-end chỉ dành cho JavaScript, chạy bên trong tiến trình trình duyệt thay vì điều khiển từ bên ngoài, đánh đổi phạm vi ngôn ngữ để lấy vòng lặp phát triển nhanh hơn. ↗browser-use — được xây cho agent AI điều khiển trình duyệt, không phải để viết script test tất định. ↗WebDriverAgent — thư viện tự động hóa theo giao thức WebDriver của Apple/Facebook dành cho iOS, nếu mục tiêu của bạn là mobile chứ không phải trình duyệt desktop. ↗

Vấn đề mà Selenium giải quyết

Trước khi WebDriver trở thành chuẩn W3C, script tự động hóa trình duyệt bị khóa vào các hook riêng mà mỗi hãng trình duyệt tự expose, nên một script viết cho trình duyệt này thường không chạy được trên trình duyệt khác. Vai trò cụ thể của Selenium là cung cấp lớp giao thức dùng chung đó — cùng với client binding cho sáu ngôn ngữ — để cùng một logic tự động hóa chạy được trên Chrome, Firefox, Edge và các trình duyệt tuân theo WebDriver khác, thay vì phải viết lại cho từng trình duyệt.

Trường hợp sử dụng tốt nhất

  • •Bộ test giao diện đa trình duyệt cần chạy cùng một logic test trên Chrome, Firefox và Edge qua cùng một giao diện WebDriver.
  • •Tự động hóa test end-to-end gắn vào một framework test có sẵn, dùng binding Java, Python, JavaScript, Ruby hoặc C# của Selenium.
  • •Chạy test headless trong CI, dùng cờ --headless được tài liệu hóa cho Chrome, Edge và Firefox.
  • •Đóng góp một bản sửa lỗi cho chính Selenium — build bằng Bazel và chạy bộ test của ngôn ngữ liên quan ở máy local trước khi gửi pull request.
  • •Chạy phiên trình duyệt phân tán qua thành phần Grid, được build như một target Bazel riêng để chạy test trên nhiều máy.

Cách sử dụng

README nói rõ đây là tài liệu cho việc đóng góp và build, không phải hướng dẫn viết test dùng Selenium như một thư viện — phần đó nằm trong User Manual riêng tại selenium.dev/documentation. Những gì được tài liệu hóa rõ ràng là: build bằng Bazel, có thể build trực tiếp (bazel build //java/src/org/openqa/selenium/grid:executable-grid) hoặc qua wrapper ./go của dự án (./go java:build), và chạy test bằng bazel test, lọc theo kích thước (small, medium, large) hoặc theo tag (--test_tag_filters=this,-not-this). Một số cờ test hữu ích gồm --headless cho Chrome, Edge và Firefox, --flaky_test_attempts 3 để chạy lại test không ổn định, và --test_output streamed để xem output ngay khi test chạy thay vì chỉ khi thất bại.

Repo liên quan

Nguồn & ghi công

Lấy nguồn từ repository GitHub SeleniumHQ/selenium (github.com/SeleniumHQ/selenium), bao gồm cả README và metadata của repo.

Dữ liệu GitHub · đồng bộ lần cuối 14 thg 8, 2026Đánh giá bởi Henry
← Về TopGit

Muốn nghe thêm một ý kiến về selenium?

Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về selenium.

GitHub