Là gì Selenium? Giới thiệu Hướng dẫn

⚡ Tóm tắt thông minh

Selenium là một nền tảng kiểm thử tự động mã nguồn mở, miễn phí, được thiết kế để xác thực các ứng dụng web trên nhiều trình duyệt và nền tảng, sử dụng nhiều ngôn ngữ lập trình. Nền tảng này cho phép tự động hóa kiểm thử mạnh mẽ, hiệu quả và có khả năng mở rộng cho các hoạt động QA hiện đại.

  • Nguyên tắc chính: Selenium tạo điều kiện xác thực tự động các ứng dụng web trên nhiều trình duyệt và hệ điều hành khác nhau, hỗ trợ các ngôn ngữ như Java, C#, Python, Và nhiều hơn nữa.
  • Cấu trúc bộ công cụ: Selenium bao gồm bốn thành phần chính—IDE, Remote Control, WebDriver và Grid—mỗi thành phần giải quyết các nhu cầu tự động hóa riêng biệt.
  • IDE & Nguyên mẫu: Selenium IDE là tiện ích mở rộng của trình duyệt dùng để tạo và tạo nguyên mẫu trường hợp nhanh chóng, nhưng phù hợp nhất với các tình huống thử nghiệm đơn giản.
  • Sự phát triển của điều khiển từ xa: Selenium RC, hiện đang ở chế độ bảo trì, là nền tảng đầu tiên cho phép chạy tập lệnh thử nghiệm bằng nhiều ngôn ngữ, giải quyết các hạn chế về chính sách của trình duyệt.
  • Triển khai WebDriver: WebDriver giao tiếp trực tiếp với trình duyệt, cung cấp khả năng kiểm soát ở cấp độ hệ điều hành và tính ổn định vượt trội cho quá trình tự động hóa phức tạp.
  • Lưới cho tính song song: Selenium Grid cho phép thực hiện song song các bài kiểm tra trên nhiều máy và trình duyệt, giúp giảm đáng kể thời gian chu kỳ kiểm tra.
  • Hỗ trợ đa trình duyệt và nền tảng: Selenium hỗ trợ nhiều trình duyệt và hệ điều hành, mang lại sự linh hoạt vô song cho QA web.
  • Tác động trong thế giới thực: Các đội sử dụng Selenium để đẩy nhanh chu kỳ phát hành, giảm thử nghiệm thủ công và đảm bảo UX nhất quán trên nhiều trình duyệt, với kết quả đã được chứng minh trong SaaS, CI/CD và phân phối tính năng.

selen là gì

Là gì Selenium?

Selenium là khung kiểm tra tự động miễn phí (mã nguồn mở) được sử dụng để xác thực các ứng dụng web trên các trình duyệt và nền tảng khác nhau. Bạn có thể sử dụng nhiều ngôn ngữ lập trình như Java, C#, Python, v.v. để tạo Selenium Kịch bản thử nghiệm. Việc kiểm tra được thực hiện bằng cách sử dụng Selenium công cụ kiểm tra thường được gọi là Selenium Kiểm tra.

Thông tin chuyên sâu

“Tránh sử dụng độ trễ ngủ cố định trong các bài kiểm tra của bạn. Thay vào đó, hãy sử dụng lệnh chờ rõ ràng (như WebDriverWait) để chờ các thành phần tải. Điều này làm cho các tập lệnh của bạn đáng tin cậy hơn và nhanh hơn, vì chúng phản hồi động với các điều kiện trang thực tế—một phương pháp hay nhất quan trọng đối với sinh viên ở mọi nơi, bắt đầu bằng Selenium".

— Himanshu Sheth, Selenium Hỗ trợ

👉 Đăng ký miễn phí trực tiếp Selenium Dự án thử nghiệm

Selenium Bộ công cụ

Selenium Phần mềm không chỉ là một công cụ đơn lẻ mà là một bộ phần mềm, mỗi phần phục vụ cho những mục đích khác nhau. Selenium Nhu cầu kiểm tra QA của một tổ chức. Đây là danh sách các công cụ

  • Selenium Môi trường phát triển tích hợp (IDE)
  • Selenium Điều khiển từ xa (RC)
  • webdriver
  • Selenium lưới

Selenium Bộ công cụ

Tại thời điểm này, Selenium RC và WebDriver được hợp nhất thành một khung duy nhất để tạo thành Selenium 2. Selenium Nhân tiện, số 1 đề cập đến Selenium RC.

Video Hướng Dẫn Selenium

Nhấp chuột đây nếu video không thể truy cập được

Ai đã phát triển Selenium?

từ Selenium là một tập hợp các công cụ khác nhau, nó cũng có các nhà phát triển khác nhau. Dưới đây là những người chủ chốt có đóng góp đáng kể cho Selenium Dự án

Đã phát triển Selenium

Chủ yếu, Selenium là được tạo bởi Jason Huggins vào năm 2004Là một kỹ sư tại ThoughtWorks, anh ấy đang làm việc trên một ứng dụng web đòi hỏi phải kiểm tra thường xuyên. Nhận thấy việc kiểm tra thủ công lặp đi lặp lại của ứng dụng ngày càng kém hiệu quả, anh ấy đã tạo ra một JavaScript chương trình sẽ tự động kiểm soát các hành động của trình duyệt. Ông đặt tên cho chương trình này là "JavaScriptTestRunner.”

Nhận thấy ý tưởng này có tiềm năng giúp tự động hóa các ứng dụng web khác, anh ấy đã thực hiện JavaScriptRunner mã nguồn mở, sau này được đổi tên Selenium Trung tâm. Đối với những người quan tâm đến việc khám phá các tùy chọn khác để thử nghiệm ứng dụng web, hãy xem các tùy chọn này Selenium lựa chọn thay thế.

Vấn đề về chính sách xuất xứ tương tự

Chính sách cùng nguồn gốc cấm JavaMã lệnh truy cập các phần tử từ một miền khác với nơi nó được khởi chạy. Ví dụ, mã HTML trong www.google.com sử dụng một JavaChương trình tập lệnh "randomScript.js". Chính sách gốc tương tự sẽ chỉ cho phép randomScript.js truy cập các trang trong google.com, chẳng hạn như google.com/mail, google.com/login hoặc google.com/signup. Tuy nhiên, nó không thể truy cập các trang từ các trang web khác như yahoo.com/search hoặc guru99.com vì chúng thuộc các tên miền khác nhau.

Vấn đề về chính sách xuất xứ tương tự

Đây là lý do tại sao, trước khi Selenium RC, người kiểm tra cần cài đặt bản sao cục bộ của cả hai Selenium Cốt lõi (một JavaChương trình tập lệnh) và máy chủ web chứa ứng dụng web đang được thử nghiệm, do đó chúng sẽ thuộc cùng một miền

Ngày sinh của Selenium Điều khiển từ xa (Selenium RC)

Paul Hammant

Thật không may, các nhà thử nghiệm sử dụng Selenium Core đã phải cài đặt toàn bộ ứng dụng đang được thử nghiệm và máy chủ web trên máy tính cục bộ của họ do những hạn chế do chính phủ đặt ra. chính sách cùng nguồn gốc. Vì vậy, một kỹ sư khác của ThoughtWorks, Paul Hammant, quyết định tạo một máy chủ hoạt động như một proxy HTTP để "lừa" trình duyệt tin rằng Selenium Core và ứng dụng web đang được thử nghiệm đều đến từ cùng một miền. Hệ thống này sau này được gọi là Selenium điều khiển từ xa or Selenium 1.

Ngày sinh của Selenium lưới

Patrick Lightbody

Selenium Lưới được phát triển bởi Patrick Lightbody để giải quyết nhu cầu giảm thiểu thời gian thực hiện thử nghiệm càng nhiều càng tốt. Ban đầu, ông gọi hệ thống “QA được lưu trữ.” Nó có khả năng chụp ảnh màn hình trình duyệt trong các giai đoạn quan trọng và cũng có khả năng gửi ra Selenium lệnh tới nhiều máy khác nhau cùng một lúc.

Ngày sinh của Selenium IDE

Shinya Kasatani

Shinya Kasatani của Nhật Bản đã tạo ra Selenium IDE, Một Firefox và tiện ích mở rộng Chrome có thể tự động hóa trình duyệt thông qua tính năng ghi và phát lại. Anh ấy đã nghĩ ra ý tưởng này để tăng tốc độ tạo các trường hợp thử nghiệm. Anh ấy đã quyên góp Selenium IDE đến Selenium Dự án ở 2006.

Sự ra đời của WebDriver

Simon Stewart

Simon Stewart đã tạo WebDriver vào khoảng 2006 khi các trình duyệt và ứng dụng web ngày càng trở nên mạnh mẽ hơn và hạn chế hơn với JavaCác chương trình kịch bản như Selenium Cốt lõi. Đây là khuôn khổ thử nghiệm đa nền tảng đầu tiên có thể kiểm soát trình duyệt ở cấp độ hệ điều hành.

Ngày sinh của Selenium 2

In 2008, Toàn bộ Selenium Nhóm đã quyết định hợp nhất WebDriver và Selenium RC để tạo thành một công cụ mạnh mẽ hơn được gọi là Selenium 2, với WebDriver là cốt lõi. Hiện tại, Selenium RC vẫn đang được phát triển, nhưng chỉ ở chế độ bảo trì. Hầu hết Selenium Những nỗ lực của dự án hiện đang tập trung vào Selenium 2.

Vì vậy, tại sao tên Selenium?

Tên Selenium đến từ một trò đùa mà Jason đã từng nói với đội của anh ấy. Trong lúc Seleniumsự phát triển của, một cái khác kiểm tra tự động khung được sản xuất phổ biến bởi công ty có tên là Mercury Interactive (vâng, công ty ban đầu đã tạo ra QTP trước khi nó được HP mua lại). Kể từ khi Selenium là một loại thuốc giải độc nổi tiếng cho Mercury đầu độc, Jason gợi ý cái tên đó và đồng đội của anh đã lấy nó. Vì vậy, đó là cách chúng tôi gọi framework này cho đến hiện tại.

Tại sao tên Selenium

Là gì Selenium IDE?

Selenium Môi trường phát triển tích hợp (IDE) là khung đơn giản nhất trong Selenium bộ và là dễ học nhất. Nó là một Chrome và Firefox Plugin mà bạn có thể cài đặt dễ dàng nhất có thể với các plugin khác. Tuy nhiên, vì tính đơn giản của nó, Selenium IDE chỉ nên được sử dụng như một công cụ tạo mẫu. Nếu bạn muốn tạo các trường hợp thử nghiệm nâng cao hơn, bạn sẽ cần sử dụng một trong hai cách sau: Selenium RC hoặc WebDriver.

Selenium IDE

Là gì Selenium Điều khiển từ xa (Selenium RC)?

Selenium RC là khung thử nghiệm hàng đầu tất cả Selenium dự án trong một thời gian dài. Đây là lần đầu tiên tự động thử nghiệm web công cụ đó cho phép người dùng sử dụng ngôn ngữ lập trình mà họ thích. Tính đến phiên bản 2.25.0, RC có thể hỗ trợ các ngôn ngữ lập trình sau:

Selenium Điều khiển từ xa (Selenium RC)

WebDriver là gì?

WebDriver tỏ ra tốt hơn Selenium IDE và Selenium RC trong nhiều khía cạnh. Nó thực hiện một cách tiếp cận hiện đại và ổn định hơn trong việc tự động hóa các hành động của trình duyệt. WebDriver, không giống như Selenium RC, không dựa vào JavaKịch bản cho Selenium Kiểm tra tự động hóa. Nó điều khiển trình duyệt bằng cách giao tiếp trực tiếp với nó.

Các ngôn ngữ được hỗ trợ giống như ngôn ngữ trong Selenium RC.

  • Java
  • C#
  • PHP
  • Python
  • Perl
  • hồng ngọc

webdriver

Là gì Selenium Lưới?

Selenium Lưới là một công cụ được sử dụng cùng với Selenium RC để chạy kiểm tra song song trên các máy khác nhau và các trình duyệt khác nhau cùng một lúc. Thực hiện song song có nghĩa là chạy nhiều thử nghiệm cùng một lúc.

Tính năng, đặc điểm:

  • cho phép chạy thử nghiệm đồng thời in nhiều trình duyệt và môi trường.
  • Tiết kiệm thời gian rất nhiều.
  • Sử dụng trung tâm và nút ý tưởng. Hub hoạt động như một nguồn trung tâm của Selenium lệnh tới mỗi nút được kết nối với nó.

Selenium Hỗ trợ trình duyệt và môi trường

Bởi vì sự khác biệt về kiến ​​trúc của họ, Selenium SDI, Selenium RC và WebDriver hỗ trợ các bộ trình duyệt và môi trường hoạt động khác nhau.

  Selenium IDE webdriver
Hỗ trợ trình duyệt Mozilla Firefox và Chrome Google Chrome 12 +
Firefox
Internet Explorer 7+ và Edge
Cuộc đi săn, cuộc hành trình,
HtmlUnit và PhantomUnit
Operahệ thống ting Windows, Mac OS X, Linux Tất cả các hệ điều hành mà các trình duyệt trên có thể chạy.

Lưu ý: Opera Trình điều khiển không còn hoạt động

Làm thế nào để chọn đúng Selenium Công cụ cho nhu cầu của bạn

Công cụ Tại sao chọn?
Selenium IDE
  • Để tìm hiểu về các khái niệm về kiểm thử tự động và Selenium, Bao gồm:
  • Các lệnh Selenese như gõ, mở, clickAndWait, khẳng định, xác minh, v.v.
  • Các bộ định vị như id, tên, xpath, bộ chọn css, v.v.
  • Thực hiện tùy chỉnh JavaMã lệnh sử dụng runScript
  • Xuất các trường hợp thử nghiệm ở nhiều định dạng khác nhau.
  • Để tạo ra các bài kiểm tra với ít hoặc không có kiến ​​thức nền tảng về lập trình.
  • Để tạo các trường hợp thử nghiệm và bộ thử nghiệm đơn giản mà sau này bạn có thể xuất sang RC hoặc WebDriver.
  • Để kiểm tra một ứng dụng web dựa trên Firefox và chỉ Chrome.
Selenium RC
  • Để thiết kế bài kiểm tra bằng ngôn ngữ biểu cảm hơn Selenese
  • Để chạy thử nghiệm của bạn trên các trình duyệt khác nhau (ngoại trừ HtmlUnit) trên các hệ điều hành khác nhau.
  • Để triển khai các thử nghiệm của bạn trên nhiều môi trường bằng cách sử dụng Selenium Lưới.
  • Để kiểm tra ứng dụng của bạn trên một trình duyệt mới hỗ trợ JavaKịch bản.
  • Để kiểm tra các ứng dụng web với các tình huống phức tạp dựa trên AJAX.
webdriver
  • Để sử dụng một ngôn ngữ lập trình nhất định trong việc thiết kế trường hợp thử nghiệm của bạn.
  • Để kiểm tra các ứng dụng có nhiều chức năng dựa trên AJAX.
  • Để thực hiện kiểm tra trên trình duyệt HtmlUnit.
  • Để tạo kết quả kiểm tra tùy chỉnh.
Selenium lưới
  • Để chạy của bạn Selenium Các tập lệnh RC trên nhiều trình duyệt và hệ điều hành cùng lúc.
  • Để chạy một bộ thử nghiệm lớn cần phải hoàn thành trong thời gian ngắn nhất có thể.

Nghiên cứu điển hình trong thế giới thực

🔍 Nghiên cứu tình huống 1: Khả năng tương thích giữa nhiều trình duyệt cho Bảng điều khiển SaaS

Kịch bản

Một công ty phần mềm dưới dạng dịch vụ đang chuẩn bị phát hành bảng điều khiển phân tích cần hoạt động nhất quán trên các trình duyệt hiện đại (Chrome, Firefox, Edge, Safari).

Thách thức

Việc kiểm thử thủ công trên từng trình duyệt rất tốn thời gian, dễ xảy ra lỗi và không theo kịp tốc độ phát triển nhanh chóng.

Giải pháp với Selenium

Một kỹ sư QA đã tạo ra một Selenium lưới thiết lập để thực hiện cùng một bộ kiểm tra đồng thời trên nhiều trình duyệt và kết hợp hệ điều hành. Các bài kiểm tra được biên soạn trong Python sử dụng Selenium WebDriver cho các hành động như đăng nhập, lọc biểu đồ và xuất dữ liệu.

Kết quả

  • Giảm thời gian hồi quy xuống 80%.
  • Phát hiện sớm các lỗi hiển thị cụ thể của trình duyệt (ví dụ: đồ thị không thẳng hàng trong IE).
  • Duy trì UX bảng điều khiển nhất quán trên toàn bộ ma trận trình duyệt mà không cần thêm chu trình thủ công.

⚙️ Nghiên cứu tình huống 2: Tích hợp CI/CD cho ứng dụng web thông qua Selenium + TestNG

Kịch bản

Một công ty phát triển web cỡ trung dựa vào đường ống CI/CD sử dụng Jenkins. Họ cần đảm bảo hành trình của người dùng cốt lõi hoạt động sau mỗi lần thay đổi mã.

Thách thức

Việc triển khai bản dựng mới đôi khi làm gián đoạn luồng người dùng—đăng nhập, gửi biểu mẫu—và không bị phát hiện cho đến khi kiểm tra thủ công vào cuối ngày.

Giải pháp với Selenium

Một người thử nghiệm đã thực hiện một JavaDựa trên Selenium Bộ WebDriver được tích hợp với TestNG. Các thử nghiệm bao gồm xác thực, cập nhật hồ sơ và chức năng tìm kiếm. Những chức năng này chạy trên mọi bản dựng Jenkins, tận dụng thực thi song song và tham số hóa trình duyệt.

Kết quả

  • Đạt được phản hồi nhanh khi có lỗi: các luồng bị hỏng được đánh dấu ngay lập tức.
  • Giảm hơn 60% lỗi sau khi triển khai.
  • Cho phép các nhà phát triển giải quyết các vấn đề trước khi chúng đến được bộ phận QA.

🚀 Nghiên cứu tình huống 3: Đẩy nhanh việc phát hành tính năng cho Travel Aggregator

Kịch bản

Một nền tảng tổng hợp du lịch cần phát hành tính năng đặt vé máy bay được cải tiến. Các thử nghiệm hồi quy thủ công trên hơn 10 trang mất nhiều ngày và đã chặn phát hành.

Thách thức

Áp lực rút ngắn thời gian đưa sản phẩm ra thị trường không thể vượt qua được chu kỳ thử nghiệm thủ công, dẫn đến nguy cơ chậm trễ hoặc chất lượng giảm.

Giải pháp với Selenium & Mô hình đối tượng trang

Người đứng đầu bộ phận tự động hóa QA đã giới thiệu cấu trúc Mô hình đối tượng trang (POM) bằng C#. Selenium Các tập lệnh WebDriver đóng gói các thành phần và hành động của trang (tìm kiếm chuyến bay, áp dụng bộ lọc và trường hợp thanh toán). Các lần chạy thử nghiệm tự động được kích hoạt hàng đêm trên GitLab CI.

Kết quả

  • Thời gian thử nghiệm giảm từ 3 ngày xuống chỉ còn 4 giờ.
  • Việc tái sử dụng tập lệnh trên nhiều tính năng giúp giảm 50% công sức viết tập lệnh.
  • Sự tự tin tăng lên: bản phát hành được ra mắt đúng thời hạn với rất ít báo cáo lỗi.

Chung Selenium Thách thức (và cách khắc phục)

Mặc dù Selenium Mặc dù mạnh mẽ, nhưng người kiểm thử thường gặp phải những thách thức có thể ảnh hưởng đến độ tin cậy và tốc độ. Dưới đây là một số vấn đề phổ biến và cách khắc phục:

  1. Kiểm tra không ổn định:
    Các bài kiểm tra có thể thất bại ngẫu nhiên do thời gian hoặc sự cố mạng.
    Khắc phục: Sử dụng lệnh chờ rõ ràng và trình định vị ổn định; tránh Thread.sleep().
  2. Các thành phần web động:
    Việc thay đổi ID phần tử hoặc XPath sẽ gây ra lỗi không tìm thấy phần tử.
    Khắc phục: Sử dụng XPath tương đối, bộ chọn CSS hoặc xử lý thuộc tính động.
  3. SyncCác vấn đề về hronization:
    Các phần tử tải chậm hơn so với quá trình thực thi tập lệnh.
    Khắc phục: Triển khai WebDriverWait với các điều kiện mong đợi.
  4. Sự không nhất quán giữa các trình duyệt:
    Các bài kiểm tra hoạt động khác nhau trên Chrome, Firefoxhoặc Cạnh.
    Khắc phục: Chạy thử nghiệm trên Selenium Nền tảng lưới hoặc đám mây để xác thực trên nhiều trình duyệt.
  5. Xử lý cửa sổ bật lên và cảnh báo:
    Các cửa sổ bật lên bất ngờ có thể làm gián đoạn luồng thử nghiệm.
    Khắc phục: Sử dụng SeleniumGiao diện cảnh báo hoặc khối try-catch để xử lý chúng một cách khéo léo.
  6. Chi phí bảo trì thử nghiệm:
    Những thay đổi thường xuyên về UI khiến các bài kiểm tra trở nên dễ bị lỗi.
    Khắc phục: Áp dụng Mô hình đối tượng trang (POM) và kiểm soát phiên bản để dễ dàng cập nhật.
  7. Thách thức hội nhập:
    Đường ống CI/CD có thể bị lỗi do sự cố trình điều khiển.
    Khắc phục: Sử dụng Selenium Người quản lý (Selenium 4+) hoặc WebDriver Manager để tự động quản lý trình điều khiển.

Trong ngắn hạn: Hầu hết Selenium các vấn đề bắt nguồn từ sự đồng bộ hóa kém hoặc bộ định vị dễ hỏng—cả hai đều có thể giải quyết thông qua chế độ chờ thông minh hơn, thiết kế mô-đun và bảo trì liên tục.

Hỏi đáp về:

Selenium là một nền tảng tự động hóa mã nguồn mở được sử dụng để kiểm tra các ứng dụng web trên nhiều trình duyệt và nền tảng khác nhau. Nó cho phép người kiểm tra mô phỏng các tương tác của người dùng như nhấp chuột, gửi biểu mẫu và điều hướng bằng nhiều ngôn ngữ lập trình khác nhau.

Selenium chủ yếu được sử dụng để tự động hóa thử nghiệm dựa trên trình duyệt. Nó giúp đảm bảo các ứng dụng web hoạt động chính xác trên mọi trình duyệt, hỗ trợ kiểm tra hồi quy và chức năng, đồng thời tích hợp dễ dàng với các quy trình CI/CD để kiểm tra liên tục.

Selenium bao gồm bốn thành phần chính: Selenium IDE (công cụ ghi/phát lại), Selenium RC (không dùng nữa), Selenium webdriver (API tự động hóa hiện đại) và Selenium lưới (để thực hiện thử nghiệm song song, trên nhiều trình duyệt).

Bốn loại đó là: Selenium IDE để ghi lại các bài kiểm tra, Selenium RC cho tự động hóa kế thừa, Selenium webdriver để kiểm soát trình duyệt trực tiếp và Selenium lưới để thử nghiệm phân tán, song song trên nhiều trình duyệt.

Selenium WebDriver là thành phần cốt lõi tương tác trực tiếp với trình duyệt bằng API gốc. Nó cho phép các nhà phát triển viết các tập lệnh tự động hóa mạnh mẽ, đa trình duyệt bằng các ngôn ngữ như Java, Pythonvà C#, mà không cần dựa vào JavaKịch bản.

Selenium IDE thân thiện với người mới bắt đầu, cung cấp chức năng ghi và phát lại thông qua tiện ích mở rộng của trình duyệt. webdriverMặt khác, dựa trên mã, hỗ trợ nhiều ngôn ngữ và cung cấp khả năng tự động hóa trình duyệt tiên tiến, có khả năng mở rộng phù hợp với các khuôn khổ thử nghiệm thực tế.

Tóm tắt bài viết này với: