Selenium là một trong những khuôn khổ tự động hóa được sử dụng rộng rãi nhất để kiểm tra ứng dụng web. Nó tự động hóa việc kiểm tra trình duyệt và giảm bớt các nỗ lực kiểm tra dư thừa cho Cộng đồng QA. Hầu hết các tổ chức đang chuyển sang sử dụng Selenium để tự động hóa các bộ thử nghiệm thường được chạy thường xuyên. Selenium WebDriver là một thành phần quan trọng của bộ Selenium. Đây là Hướng dẫn sử dụng Selenium WebDriver để giúp bạn hiểu Selenium WebDriver là gì và nó ra đời như thế nào. Chúng tôi cũng sẽ xem xét kiến trúc Selenium WebDriver và chạy thử nghiệm tự động hóa với Selenium WebDriver.
Trước khi đi sâu vào hướng dẫn Selenium WebDriver này , chúng ta sẽ cần hiểu Selenium là gì và các thành phần của Selenium là gì.
Selen là gì?
Selenium là một khung kiểm tra tự động mã nguồn mở, được sử dụng để xác thực các ứng dụng dựa trên web. Nó cho phép chúng tôi thực hiện các bài kiểm tra trên các trình duyệt và nền tảng khác nhau. Một số tiện ích của nó là:
- Selenium hỗ trợ nhiều ngôn ngữ lập trình như Java, Python, C #, JavaScript, Ruby, PHP và Perl.
- Selenium cũng độc lập với nền tảng, có nghĩa là nếu bạn viết một bài kiểm tra Selenium trong hệ điều hành Windows, bạn có thể dễ dàng thực thi tương tự trên Linux hoặc macOS.
- Các bài kiểm tra Selenium có thể được thực hiện trên nhiều trình duyệt, như Firefox, Chrome, Internet Explorer, Safari và Opera.
- Nó có một cộng đồng rộng rãi sẵn sàng hỗ trợ.
- Thực hiện kiểm tra song song là một trong những tính năng chính của Selenium.
Các thành phần của Selenium là gì?
Như đã nói, Selenium là một khuôn khổ, tức là nó không phải là một phần mềm đơn lẻ mà là một bộ, bao gồm các thành phần khác nhau. Tham khảo sơ đồ bên dưới để xem sự phát triển của các thành phần Selen.
Selen bao gồm bốn thành phần chính:
-
Selenium IDE
-
Selenium RC
-
WebDriver
-
Lưới Selenium
Hãy để chúng tôi hiểu sơ qua về từng thành phần này.
Selenium IDE
Môi trường phát triển tích hợp Selenium (IDE) là khuôn khổ đơn giản nhất dễ học nhất. Nó là một plugin trình duyệt cho Mozilla Firefox và Google Chrome. Bạn không cần phải có bất kỳ kinh nghiệm ngôn ngữ lập trình nào để làm việc với IDE. Nó cho phép phương pháp ghi và phát lại, trong đó bạn có thể ghi lại các bước kiểm tra của mình và xuất chúng sang ngôn ngữ lập trình ưa thích của bạn. Các bài kiểm tra đã xuất này sau đó có thể được sử dụng trong Selenium WebDriver. Nó thường được sử dụng để tạo các nguyên mẫu thử nghiệm. Bạn có thể tải xuống Selenium IDE từ trang web Official Selenium .
Selenium RC
Về cơ bản, nó là một máy chủ cho phép người dùng tạo các tập lệnh thử nghiệm bằng bất kỳ ngôn ngữ nào được hỗ trợ. Không giống như Selenium IDE, nó không có tính năng ghi và phát lại. Nó được gọi là Selenium 1.0. Phiên bản này mang đến khái niệm thực thi song song và từ xa. Nhiều hạn chế, như máy chủ Selenium RC, phải chạy, các tương tác trình duyệt kém thực tế hơn, kết quả không nhất quán, v.v. đã dẫn đến việc ngừng sử dụng và phát triển Selenium WebDriver.
Selenium WebDriver
Selenium WebDriver khắc phục những hạn chế của Selenium RC. Không giống như Selenium RC, nó không phụ thuộc vào JavaScript. Nó kiểm soát trình duyệt bằng cách giao tiếp trực tiếp. Nó có thời gian thực thi nhanh hơn so với IDE và RC. Selenium RC và WebDriver được hợp nhất thành một đơn vị duy nhất được gọi là Selenium WebDriver 2.0. Theo thời gian, Selenium WebDriver đã được cải tiến để có nhiều tính năng và chức năng hơn và hiện tại chúng tôi đã có Selenium 4.0 trên thị trường đang được sử dụng rộng rãi. Trong bài viết này, chúng tôi sẽ tập trung chủ yếu vào Selenium WebDriver và sử dụng tương tự trong việc tạo các trường hợp kiểm thử tự động.
Lưới Selenium
Selenium Grid cho phép người dùng thực hiện thử nghiệm song song. Nó được sử dụng cùng với Selenium RC để chạy các bài kiểm tra song song trên các trình duyệt và máy khác nhau. Người dùng có thể chạy đồng thời các bài kiểm tra trong nhiều môi trường đồng thời nhờ đó tiết kiệm được nhiều thời gian. Nó thực hiện khái niệm hub-node, trong đó mỗi nút nhận lệnh từ trung tâm được đặt ở vị trí trung tâm.
Selenium WebDriver khác với Selenium RC như thế nào?
Trước khi chúng ta đến phần trình diễn thực tế trong hướng dẫn Selenium WebDriver này. Đó là mấu chốt để hiểu sự khác biệt giữa Selenium WebDriver và Selenium RC hoặc bạn có thể nói sự khác biệt giữa Selenium 1.0 và Selenium 2.0.
Sự khác biệt trong kiến trúc
Selenium WebDriver có kiến trúc đơn giản hơn so với Selenium RC. WebDriver kiểm soát trình duyệt từ Hệ điều hành. Để làm việc với WebDriver, bạn chỉ cần ràng buộc ngôn ngữ lập trình và trình điều khiển trình duyệt.
Mặt khác, Selenium RC yêu cầu Máy chủ điều khiển từ xa Selenium phải chạy trước khi thực hiện các bài kiểm tra.
Selenium RC đóng vai trò là lớp trung gian giữa mã Selenium và trình duyệt, Lớp này đưa Selenium Core, là một chương trình Javascript vào trình duyệt. Lõi này bắt đầu nhận các hướng dẫn do chương trình của bạn đưa ra thông qua máy chủ RC. Sau đó, Selenium Core thực thi chúng dưới dạng các lệnh Javascript. Trình duyệt làm theo hướng dẫn của Selenium Core và gửi lại phản hồi đến máy chủ Selenium RC. Bây giờ RC Server nhận phản hồi của trình duyệt và hiển thị kết quả cho người dùng cuối.
Sự khác biệt về tốc độ thực thi
Mỗi lệnh tuân theo quy trình kéo dài này trong Selenium RC, trong khi trong Selenium WebDriver, tương tác trực tiếp làm giảm vòng đời.
-
Selenium WebDriver tương tác trực tiếp với trình duyệt và sử dụng công cụ của nó để điều khiển giống nhau, do đó tốc độ thực thi nhanh chóng.
-
Đầu tiên, Selenium RC chuyển đổi các lệnh Selenium thành Selenium Core điều khiển trình duyệt web, kết quả là tốc độ thực thi chậm hơn.
Sự khác biệt trong tương tác
-
Selenium WebDriver hỗ trợ các tương tác trong đời thực bằng cách giao tiếp trực tiếp với trình duyệt web. Ví dụ: nếu một số phần tử web bị ẩn hoặc bị vô hiệu hóa, WebDriver sẽ không thể định vị nó giống như một con người bình thường.
-
Selenium RC sử dụng Selenium Core tương tự như mã JavaScript. Lõi này có thể truy cập các phần tử bị ẩn hoặc bị vô hiệu hóa. Vì vậy, ngay cả khi một số hộp văn bản bị tắt trên giao diện người dùng, bằng cách sử dụng Selenium RC, người dùng có thể nhập các giá trị vào đó.
Sự khác biệt trong API
-
API của Selenium RC có các lệnh khó hiểu. Ví dụ: sẽ trở nên khó hiểu khi sử dụng click, mouseDown, hay mouseDownAt; hoặc sử dụng type hoặc typeKeys. Trên hết, các trình duyệt khác nhau diễn giải các lệnh này theo cách khác nhau. Do đó, nó trở thành một nhiệm vụ để chọn đúng lệnh ở đúng nơi.
-
API của Selenium WebDriver đơn giản hơn và dễ sử dụng.
Sự khác biệt trong hỗ trợ trình duyệt
-
Selenium WebDriver hỗ trợ trình duyệt HTMLUnit không đầu. Không có đầu, có nghĩa là không có màn hình giao diện người dùng và các lệnh thực thi với một trình duyệt vô hình.
-
Selenium RC không hỗ trợ trình duyệt không có đầu.
Kiến trúc Selenium WebDriver
Hình dưới đây giới thiệu tổng quan về kiến trúc của Selenium WebDriver.
Selenium WebDriver bao gồm bốn thành phần chính:
-
Thư viện khách hàng Selenium / Ràng buộc ngôn ngữ
-
Giao thức dây JSON
-
Trình điều khiển trình duyệt
-
Trình duyệt thực
Thư viện khách hàng Selenium / Liên kết ngôn ngữ Selenium
Để hỗ trợ nhiều ngôn ngữ, các nhà phát triển Selenium đã xây dựng các ràng buộc ngôn ngữ. Nếu bạn đang viết các bài kiểm tra của mình trong java, bạn có thể sử dụng các liên kết Java. Các thư viện khách này có thể được tải xuống từ trang web chính thức của Selenium .
Giao thức dây JSON
JSON là một dạng viết tắt của JavaScript Object Notation. Nó chuyển dữ liệu giữa máy khách và máy chủ. Nó cung cấp hỗ trợ cho các cấu trúc dữ liệu như các đối tượng và mảng, do đó làm cho việc đọc và ghi dữ liệu dễ dàng hơn. Nó hoạt động như một API REST (Truyền trạng thái đại diện) để truyền thông tin giữa các máy chủ HTTP.
Trình điều khiển trình duyệt
Để phát triển kết nối an toàn với trình duyệt, Selenium sử dụng Trình điều khiển. Mỗi trình duyệt có trình điều khiển riêng để ẩn logic bên trong chức năng của trình duyệt. Ngoài ra, mỗi ngôn ngữ tự động hóa có một trình điều khiển trình duyệt tương ứng. Khi thực thi các tập lệnh, một loạt các thao tác sau sẽ xảy ra:
-
Mỗi lệnh Selenium tạo ra một yêu cầu HTTP tương ứng, được gửi đến trình điều khiển trình duyệt.
-
Yêu cầu này được định tuyến thông qua Máy chủ HTTP.
-
Máy chủ HTTP hiện điều khiển việc thực thi lệnh trên trình duyệt.
-
Trình duyệt sẽ gửi lại trạng thái tới Máy chủ HTTP, máy chủ này sẽ chuyển tiếp trạng thái đó tới tập lệnh tự động hóa.
Một số trình điều khiển trình duyệt là ChromeDriver, GeckoDriver, IEDriver, v.v. Bạn có thể tải xuống các trình điều khiển này từ kho GitHub của các trình duyệt tương ứng.
Các trình duyệt
Trình duyệt là điểm cuối của quá trình thực thi thử nghiệm của chúng tôi. Selenium hỗ trợ tất cả các trình duyệt chính như Firefox, Chrome, Internet Explorer, Safari, v.v.
Tải xuống, cài đặt và thiết lập Selenium WebDriver
Trong hướng dẫn Selenium WebDriver này, chúng tôi sẽ trình bày cách sử dụng Hệ điều hành Windows với Java làm ngôn ngữ lập trình và Eclipse làm IDE. Bây giờ chúng ta sắp làm bẩn tay trong hướng dẫn Selenium WebDriver này. Bắt đầu với các điều kiện tiên quyết:
-
Cài đặt Java
-
Cài đặt IDE Eclipse
-
Cài đặt Selenium WebDriver
Cài đặt Java
Bạn cần làm theo các bước dưới đây để tải xuống Java trong hệ thống của mình.
Bước 1: Truy cập Trang web tải xuống Java chính thức và tải xuống Trình cài đặt JDK cho Windows x64.
Bước 2: Chấp nhận thỏa thuận cấp phép trong cửa sổ bật lên tiếp theo và nhấp vào Tải xuống.
Bước 3: Sau khi quá trình tải xuống hoàn tất, hãy điều hướng đến thư mục Tải xuống và nhấp đúp vào tệp thực thi để Java được cài đặt trong hệ thống của bạn.
Thiết lập các biến môi trường
Sau khi cài đặt xong, bạn cần đặt Biến môi trường bằng cách sử dụng các bước sau-
Bước 1: Mở cài đặt PC của bạn và chọn Cài đặt Hệ thống Nâng cao từ cửa sổ hộp thoại Hệ thống.
Bước 2: Nhấp vào nút Biến môi trường trên cửa sổ tiếp theo.
Bước 3: Bây giờ trong Biến hệ thống, nhấp đúp vào Đường dẫn.
Bước 4: Thêm đường dẫn đầy đủ của thư mục cài đặt Java theo vị trí hệ thống của bạn và nhấp vào OK.
Bước 5: Vậy là xong. Bây giờ bạn có thể thấy đường dẫn trên cùng trong ảnh chụp màn hình là đường dẫn java trong hệ thống của tôi.
Để xác minh rằng java đã được cài đặt và các biến được đặt chính xác, hãy mở Command Prompt và nhập: java -version. Bạn sẽ thấy phiên bản java được cài đặt trong hệ thống của mình.
Và bạn đã làm, điều kiện tiên quyết đầu tiên của bạn đã được hoàn thành. Bước tiếp theo là cài đặt Eclipse.
Cài đặt Eclipse
Bước 1: Tải xuống Eclipse IDE dành cho nhà phát triển Java từ trang web Eclipse chính thức . Tôi khuyên bạn nên tải xuống bản phát hành ổn định cuối cùng. Chọn tải xuống dựa trên kiến trúc hệ thống của bạn. Tôi đang sử dụng eclipse Mars nhưng bạn có thể chọn bất kỳ phiên bản mới nhất nào.
Bước 2: Sau khi quá trình tải xuống hoàn tất, hãy giải nén tệp zip tại một vị trí tùy theo sự thuận tiện của bạn.
Bước 3: Bây giờ mở thư mục đã giải nén và nhấp đúp vào eclipse.exe.
Nhật thực sẽ mở ra và ở đó bạn đã hoàn thành điều kiện tiên quyết thứ hai của hướng dẫn Selenium WebDriver này.
Tải xuống Selenium WebDriver và Thiết lập
Bước cuối cùng là cài đặt Máy chủ độc lập Selenium được hiển thị trong các bước bên dưới-
Bước 1: Điều hướng đến Trang web chính thức của Selenium .
Bước 2: Bạn sẽ thấy một phần dành cho Selenium Client & WebDriver Language Bindings. Bạn có thể tải xuống các thư viện ứng dụng khách tương ứng với tùy chọn ngôn ngữ của bạn. Chúng tôi sẽ làm việc với Java Client Bindings trong bài viết này.
Bước 3: Sau khi tệp được tải xuống, hãy giải nén tệp đó vào một thư mục bạn chọn từ đó bạn có thể sử dụng tệp đó sau này.
Bước 4: Bây giờ bạn có thể xem tệp đã giải nén tương ứng tại thư mục đích đã chọn.
Bước 5: Khi mở thư mục, bạn sẽ có thể thấy các tệp jar, một thư mục libs (chứa thêm một số tệp jar) và tệp Changelog.
Bước 6: Tiếp theo, bạn cần tải xuống trình điều khiển trình duyệt sẽ giúp bạn khởi tạo trình duyệt. Dưới đây là các liên kết để tải xuống trình điều khiển cho một số trình duyệt chính:
-
GeckoDriver (Firefox)
-
InternetExplorerDriver
-
ChromeDriver
Bạn có thể tham khảo phần Trình duyệt trong Trang web Selenium để tải xuống trình điều khiển cho nhiều trình duyệt hơn.
Bước 7: Tiếp theo, chỉ cần giải nén trình điều khiển đã tải xuống và lưu trữ tại một vị trí mà bạn có thể sử dụng cùng.
Bây giờ chúng ta đã hoàn tất việc thiết lập các điều kiện tiên quyết và trong phần tiếp theo sẽ xem cách chúng ta có thể cấu hình Eclipse với các Thư viện Selenium mà chúng ta vừa cài đặt.
Đặt cấu hình Eclipse cho Selenium WebDriver Hướng dẫn
Bước 1: Khởi chạy eclipse.exe đã được lưu trong các bước cài đặt Eclipse.
Bước 2: Chọn không gian làm việc của bạn theo cách thủ công hoặc để vị trí mặc định ở đó và nhấp vào OK.
Bước 3: Tạo một dự án mới bằng cách điều hướng đến Tệp> Mới> Dự án Java.
Bước 4: Nhấp vào Tiếp theo và đặt tên cho Dự án. Nhấp vào Kết thúc.
Bước 5: Bây giờ dự án của bạn đã được tạo, Nhấp chuột phải vào dự án và chọn Mới> Gói.
Bước 6: Nhập tên gói vào hộp thoại Gói Java Mới và nhấp vào Kết thúc.
Bước 7: Bây giờ bạn cần tạo một lớp trong gói. Để làm như vậy, nhấp chuột phải vào tên gói, đi tới Mới> Lớp.
Bước 8: Trong hộp thoại New Java Class, nhập tên cho lớp của bạn, chọn một phương thức gốc viz, public static void main (String [] args) và nhấp vào Kết thúc.
Trình khám phá của bạn sẽ trông giống như bên dưới:
Bước 9: Bây giờ chúng ta đã tạo phác thảo cho dự án thử nghiệm của mình, chúng ta cần nhập các thư viện mà chúng ta đã cài đặt cho Selenium WebDriver trong phần trên. Để bắt đầu với Nhấp chuột phải vào dự án và đi tới Đường dẫn xây dựng> Định cấu hình Đường dẫn xây dựng.
Bước 10: Nhấp vào Thêm JAR bên ngoài và điều hướng đến vị trí lưu các JAR đã tải xuống của bạn.
Bước 11: Chọn 2 lọ đã được cài đặt trong thư mục Selenium Client cũng như các lọ trong thư mục libs.
Bước 12: Sau khi được thêm, bạn sẽ thấy các tệp jar trong Thư viện:
Bước 13: Nhấp vào Áp dụng và sau đó OK. Bây giờ bạn có thể thấy các Thư viện được tham chiếu được điền trong trình khám phá gói-
Bây giờ chúng tôi đã cấu hình Selenium WebDriver trong Dự án Eclipse của chúng tôi và rất tốt để viết tập lệnh thử nghiệm đầu tiên của chúng tôi.
Thực thi Tập lệnh thử nghiệm đầu tiên của chúng tôi bằng Selenium WebDriver
Kịch bản thử nghiệm cho hướng dẫn Selenium WebDriver: Chúng tôi sẽ viết một chương trình thử nghiệm đơn giản sẽ khởi chạy Trình duyệt Firefox và mở “ www.google.com ”, phóng to cửa sổ, sau đó thoát khỏi phiên trình duyệt. Mã cho nó sẽ được viết trong lớp thử nghiệm mà chúng tôi đã tạo trong khi định cấu hình Selenium. Đây là mã.
package firstPackage; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class MyFirstTestClass { public static void main(String[] args) throws InterruptedException { System.setProperty(“webdriver.gecko.driver”,”E:\Softwares\geckodriver.exe”); WebDriver driver = new FirefoxDriver(); driver.get(“https://www.google.com/”); driver.manage().window().maximize(); Thread.sleep(5000); driver.quit(); } }
Giải thích mã:
System.setProperty(“webdriver.gecko.driver”,”E:\Softwares\geckodriver.exe”)
Dòng mã này được sử dụng để đặt thuộc tính cho trình duyệt, tức là, nó đặt thuộc tính hệ thống thành giá trị đã cho. Mã WebDriver sẽ tham chiếu đến trình điều khiển được lưu trữ tại vị trí như đã đề cập trong tham số thứ hai và khởi tạo Trình điều khiển Firefox. Lưu ý rằng bạn cần cung cấp đường dẫn hệ thống của bạn nơi trình điều khiển được lưu trữ.
WebDriver driver = new FirefoxDriver()
Với điều này, chúng tôi đang tạo một lớp Đối tượng của Firefox, bằng cách tham chiếu đến giao diện WebDriver. Nói tóm lại, chúng tôi đang triển khai các phương thức của WebDriver trong phiên bản Firefox.
driver.get(“https://www.google.com/”)
Phương thức get () của WebDriver được sử dụng để mở một URL. Nó sẽ đợi trang tải hoàn toàn.
driver.manage().window().maximize()
Phương thức tối đa hóa () tối đa hóa cửa sổ trình duyệt.
Thread.sleep(5000)
Chế độ ngủ tạm dừng việc thực thi chuỗi trong số phần nghìn giây được chỉ định trong dấu ngoặc. Điều này được sử dụng để phiên bản không hết thời gian chờ trong trường hợp kết nối internet chậm.
driver.quit()
Phương thức thoát () được sử dụng để kết thúc phiên WebDriver và đóng (các) cửa sổ trình duyệt đang hoạt động do WebDriver khởi chạy.
Khi thực thi đoạn mã được hiển thị trong hướng dẫn Selenium WebDriver này, bạn sẽ thấy nhật ký thực thi được hiển thị trong cửa sổ Eclipse Console. Khi quá trình kiểm tra đang thực hiện, bạn cũng có thể thấy cửa sổ trình duyệt được khởi chạy với Google và sau đó tự đóng lại.
Và bạn đã thực hiện thành công Tập lệnh kiểm tra Selenium WebDriver đầu tiên của mình! Hãy tiếp tục và thử viết một tập lệnh thử nghiệm với một số trình điều khiển trình duyệt khác và xem kết quả cho chính bạn.
Giới hạn của Selenium WebDriver
Với điều này, bây giờ bạn đã được trang bị tốt những kiến thức cơ bản về Selenium WebDriver. Bây giờ bạn đã biết kiến trúc hoàn chỉnh và quy trình giao tiếp của Selenium WebDriver. Bạn đã tải xuống Selenium WebDriver và cài đặt nó trong hệ thống để thực thi tập lệnh thử nghiệm đầu tiên của mình.
Tuy nhiên, vì đây là hướng dẫn về Selenium WebDriver, điều quan trọng là tôi phải truyền đạt những ưu và nhược điểm của việc sử dụng Selenium WebDriver. Chúng ta đã xem xét các ưu điểm của Selenium WebDriver , đến nay chúng ta đã biết tại sao Selenium WebDriver lại thay thế RC. Bây giờ, điều quan trọng là phải nhận ra những thách thức liên quan đến Selenium WebDriver.
-
Selenium WebDriver không hỗ trợ tự động hóa các ứng dụng dựa trên Windows.
-
Selenium WebDriver không thể tự động kiểm tra hình ảnh, hình ảnh xác thực hoặc các chức năng OTP.
-
Selenium WebDriver không có bất kỳ báo cáo tích hợp nào.
-
Vì nó là mã nguồn mở, bạn sẽ phải dựa vào các diễn đàn cộng đồng cho các vấn đề kỹ thuật của mình.
-
Bạn cần có ít nhất một kiến thức về ngôn ngữ lập trình trước khi sử dụng tự động hóa WebDriver của selen.
-
Không có tích hợp công cụ kiểm tra cho Quản lý kiểm tra trong Selenium.
-
Selenium WebDriver không hỗ trợ thử nghiệm song song, điều này gây khó khăn cho các bộ thử nghiệm lớn hơn và phức tạp. Nếu bạn muốn thực hiện thử nghiệm song song với Selenium thì bạn cần thành phần Selenium tiếp theo tức là Selenium Grid.
Selenium Grid giúp kiểm tra trình duyệt tự động như thế nào
Khi chúng ta nói về các kịch bản tự động hóa thực tế, chúng ta đi đến điểm rằng chúng ta sẽ phải kiểm tra các kịch bản tự động hóa của mình trên nhiều trình duyệt, hệ điều hành và thiết bị. Đây là nơi mà Selenium Grid xuất hiện trong bức tranh. Selenium Grid giúp giảm bớt vấn đề của chúng tôi khi nhận được nhiều thiết lập cục bộ cho các kết hợp khác nhau mà chúng tôi có thể muốn thử nghiệm. Selenium Grid làm cho việc thực thi song song có thể thực hiện được bằng cách gửi lệnh đến các phiên bản trình duyệt web từ xa từ một máy chủ trung tâm.
Chúc bạn thử nghiệm vui vẻ!