Selenium Hướng dẫn về lưới: Thiết lập Hub và Node (Ví dụ)

Là gì Selenium Lưới?

Selenium lưới Là một phần của Selenium Suite chuyên chạy song song nhiều thử nghiệm trên các trình duyệt, hệ điều hành và máy khác nhau. Nó đạt được bằng cách định tuyến các lệnh của các phiên bản trình duyệt từ xa trong đó máy chủ hoạt động như một trung tâm. Người dùng cần định cấu hình máy chủ từ xa để thực hiện kiểm tra.

Selenium Lưới có 2 phiên bản – Lưới 1 cũ hơn và Lưới 2 mới hơn. Chúng tôi sẽ chỉ tập trung vào Lưới 2 vì Lưới 1 đang dần bị loại bỏ bởi Selenium Đội.

Selenium lưới Archikiến trúc

Selenium Lưới có Hub và Nút Archikiến trúc.

Selenium lưới Archikiến trúc
Selenium lưới Archikiến trúc

Hub

  • Trung tâm là điểm trung tâm nơi bạn tải các bài kiểm tra của mình vào.
  • Chỉ nên có một trung tâm trong lưới.
  • Hub chỉ được khởi chạy trên một máy duy nhất, chẳng hạn như một máy tính có hệ điều hành Windows 7 và có trình duyệt là IE.
  • Máy chứa trung tâm là nơi các bài kiểm tra sẽ được chạy, nhưng bạn sẽ thấy trình duyệt được tự động hóa trên nút.

Nodes

  • Các nút là Selenium các phiên bản sẽ thực thi các bài kiểm tra mà bạn đã tải trên trung tâm.
  • Có thể có một hoặc nhiều nút trong một lưới.
  • Các nút có thể được khởi chạy trên nhiều máy với các nền tảng và trình duyệt khác nhau.
  • Các máy chạy các nút không cần phải có cùng nền tảng với nền tảng của trung tâm.

Selenium Lưới sử dụng khái niệm nút trung tâm trong đó bạn chỉ chạy thử nghiệm trên một máy duy nhất được gọi là trung tâm, nhưng việc thực thi sẽ được thực hiện bởi các máy khác nhau được gọi là các nút

Làm thế nào để thiết lập Selenium Lưới?

Ở phần này bạn sẽ sử dụng 2 máy. Máy đầu tiên sẽ là hệ thống chạy trung tâm trong khi máy kia sẽ chạy nút. Để đơn giản, chúng ta hãy gọi máy có hub chạy là “Máy A” trong khi máy có nút chạy sẽ là “Máy B”. Điều quan trọng cần lưu ý là địa chỉ IP của họ. Giả sử Máy A có địa chỉ IP là 192.168.1.3 trong khi Máy B có IP là 192.168.1.4.

Bước 1) Tải về Selenium Máy chủ từ đây.

Thiết lập Selenium lưới

Bước 2) Bạn có thể đặt Selenium Tệp .jar máy chủ ở bất kỳ đâu trong ổ cứng của bạn. Nhưng với mục đích của hướng dẫn này, hãy đặt nó vào ổ C của cả Máy A và Máy B. Sau khi thực hiện việc này, bạn đã cài đặt xong Selenium Lưới. Các bước sau đây sẽ khởi chạy hub và nút.

Bước 3)

  • Bây giờ chúng tôi sẽ ra mắt một trung tâm. Đi tới Máy A. Sử dụng dấu nhắc lệnh, điều hướng đến thư mục gốc của ổ đĩa – C của Máy A, vì đó là thư mục mà chúng tôi đã đặt tập tin Selenium Server.
  • Trên dấu nhắc lệnh, gõ java -jar Selenium-server-standalone-2.30.0.jar -role hub
  • Hub sẽ được khởi chạy thành công. Dấu nhắc lệnh của bạn sẽ trông giống như hình ảnh bên dưới.

Thiết lập Selenium lưới

Bước 4) Một cách khác để xác minh xem hub có đang chạy hay không là sử dụng trình duyệt. Selenium Theo mặc định, Grid sử dụng cổng 4444 của Máy A cho giao diện web của nó. Chỉ cần mở trình duyệt và truy cập http://localhost:4444/grid/console

Thiết lập Selenium lưới

Ngoài ra, bạn có thể kiểm tra xem Máy B có thể truy cập vào giao diện web của trung tâm hay không bằng cách khởi chạy trình duyệt ở đó và đi đến nơi “iporhostnameofmachineA” phải là địa chỉ IP hoặc tên máy chủ của máy nơi trung tâm đang chạy. Vì địa chỉ IP của Máy A là 192.168.1.3 nên trên trình duyệt trên Máy B bạn gõ http://192.168.1.3:4444/grid/console

Bước 5)

  • Bây giờ trung tâm đã được thiết lập, chúng ta sẽ khởi chạy một nút. Đi tới Máy B và khởi chạy dấu nhắc lệnh ở đó.
  • Điều hướng đến thư mục gốc của Ổ C và nhập mã bên dưới. Chúng tôi đã sử dụng địa chỉ IP 192.168.1.3 vì đó là nơi trung tâm đang chạy. Chúng tôi cũng đã sử dụng cổng 5566 mặc dù bạn có thể chọn bất kỳ số cổng miễn phí nào mà bạn muốn.
  • LƯU Ý: Bây giờ bạn phải cung cấp đường dẫn đến trình điều khiển Gecko nếu sử dụng Firefox. Đây là mã cập nhật cần được sử dụng
java -Dwebdriver.gecko.driver="C:\geckodriver.exe" -jar selenium-server-standalone-3.4.0.jar -role webdriver -hub http://192.168.1.3:4444/grid/register -port 5566

Thiết lập Selenium lưới

  • Khi bạn nhấn Enter, dấu nhắc lệnh của bạn sẽ giống như hình ảnh bên dưới.

Thiết lập Selenium lưới

Bước 6) Tới Selenium Giao diện web dạng lưới và làm mới trang. Bạn sẽ thấy một cái gì đó như thế này.

Thiết lập Selenium lưới

Tại thời điểm này, bạn đã cấu hình một lưới đơn giản. Bây giờ bạn đã sẵn sàng chạy thử nghiệm từ xa trên Máy B.

Khi nào sử dụng Selenium Lưới?

Bạn nên sử dụng Selenium Lưới khi bạn muốn thực hiện một hoặc cả hai thao tác sau:

  • Chạy thử nghiệm của bạn trên các trình duyệt, hệ điều hành và máy khác nhau cùng một lúc. Điều này sẽ đảm bảo rằng ứng dụng của bạn Kiểm tra hoàn toàn tương thích với nhiều sự kết hợp giữa trình duyệt và hệ điều hành.
  • Tiết kiệm thời gian trong việc thực hiện bộ thử nghiệm của bạn. Nếu bạn thiết lập Selenium Grid chạy 4 bài kiểm tra cùng một lúc, sau đó bạn có thể hoàn thành toàn bộ bộ phần mềm nhanh hơn khoảng 4 lần.

Lưới 1.0 Vs Lưới 2.0

Sau đây là những khác biệt chính giữa Selenium Lưới 1 và 2.

Lưới 1 Lưới 2
Selenium Lưới 1 có điều khiển từ xa riêng, khác với lưới Selenium Máy chủ RC. Chúng là hai chương trình khác nhau. Selenium Lưới 2 hiện được đóng gói cùng với Selenium Tệp jar máy chủ
Bạn cần cài đặt và cấu hình Apache Ant trước khi bạn có thể sử dụng Grid 1. Bạn không cần cài đặt Apache Ant trong Grid 2.
Chỉ có thể hỗ trợ Selenium Lệnh/tập lệnh RC. Có thể hỗ trợ cả hai Selenium Các tập lệnh RC và WebDriver.
Bạn chỉ có thể tự động hóa một trình duyệt cho mỗi điều khiển từ xa. Một điều khiển từ xa có thể tự động hóa tối đa 5 trình duyệt.

Selenium lưới có thể được thiết lập theo hai cách khác nhau; một thông qua dòng lệnh và một thông qua tệp cấu hình JSON.

Thiết kế tập lệnh kiểm thử có thể chạy trên lưới

Để thiết kế các tập lệnh kiểm thử sẽ chạy trên lưới, chúng ta cần sử dụng Khả năng mong muốnWebDriver từ xa các đối tượng.

  • Khả năng mong muốn được sử dụng để thiết lập loại trình duyệtOS mà chúng tôi sẽ tự động hóa.
  • WebDriver từ xa được sử dụng để đặt nút (hoặc máy) nào mà thử nghiệm của chúng tôi sẽ chạy.

Để sử dụng Khả năng mong muốn đối tượng, trước tiên bạn phải nhập gói này

Thiết kế tập lệnh kiểm thử có thể chạy trên lưới

Để sử dụng WebDriver từ xa đối tượng, bạn phải nhập các gói này.

Thiết kế tập lệnh kiểm thử có thể chạy trên lưới

Sử dụng đối tượng DesiredCapabilities

Đi tới giao diện web của Grid và di chuột lên hình ảnh của trình duyệt mà bạn muốn tự động hóa. Hãy lưu ý về nền tảng,tên trình duyệt được hiển thị bởi chú giải công cụ.

Sử dụng đối tượng DesiredCapabilities

Trong trường hợp này, nền tảng là “XP” và tên trình duyệt là “Firefox".

Chúng tôi sẽ sử dụng nền tảng và browserName trong WebDriver của chúng tôi như hiển thị bên dưới (tất nhiên trước tiên bạn cần nhập các gói cần thiết).

Sử dụng đối tượng DesiredCapabilities

Sử dụng đối tượng RemoteWebDriver

Nhập các gói cần thiết cho RemoteWebDriver rồi chuyển đối tượng DesiredCapabilities mà chúng tôi đã tạo ở trên làm tham số cho đối tượng RemoteWebDriver.

Sử dụng đối tượng RemoteWebDriver

Chạy một ca kiểm thử mẫu trên lưới

Dưới đây là một WebDriver đơn giản Kiểm tra mã mà bạn có thể tạo trong Eclipse trên Máy A. Sau khi bạn chạy nó, quá trình tự động hóa sẽ được thực hiện trên Máy B.

import org.openqa.selenium.*; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import java.net.MalformedURLException; 
import java.net.URL; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.testng.Assert;
import org.testng.annotations.*; 

public class Grid_2 {
 WebDriver driver;
 String baseUrl, nodeURL; 
 @BeforeTest 
 public void setUpWthrows MalformedURLException {
 baseUrl = "http://newtours.demoaut.com/";
 nodeURL = "http://192.168.1.4:5566/wd/hub"; 
 DesiredCapabilities capability = DesiredCapabilities.firefox();
 capability. setBrowserName("firefox");
 capability. setPlatform(Platform.XP);
 driver = new RemoteWebDriver(new URL(nodeURL), capability); 
} 
@AfterTest 
public void afterTest() {
 driver.quit(); 
 }
@Test 
public void simpleTest() { 
driver.get(baseUr1);
 Assert.assertEquas("Welcome: Mercury Tours", driver.getTitle()); } 
} 

Bài kiểm tra sẽ vượt qua.

Chạy một trường hợp thử nghiệm mẫu trên Gride Chạy một trường hợp thử nghiệm mẫu trên Gride

Selenium cấu hình lưới bằng tệp JSON

JSON là viết tắt của Javascript Ký hiệu đối tượng. Đây là định dạng chuẩn được sử dụng để trao đổi dữ liệu giữa trình duyệt và máy chủ web. Selenium có tệp cấu hình JSON tích hợp có thể được sử dụng để thiết lập lưới Selenium.

Dưới đây là các bước để định cấu hình lưới selen bằng tệp cấu hình JSON.

Bước 1) Tải xuống mã cho tệp cấu hình JSON bằng đường dẫn bên dưới

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultHub.json

Đây là mã

{
	  "port": 4444,
	  "newSessionWaitTimeout": -1,
	  "servlets" : [],
	  "withoutServlets": [],
	  "custom": {},
	  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
	  "registryClass": "org.openqa.grid.internal.DefaultGridRegistry",
	  "throwOnCapabilityNotPresent": true,
	  "cleanUpCycle": 5000,
	  "role": "hub",
	  "debug": false,
	  "browserTimeout": 0,
	  "timeout": 1800
}

Bước 2) Sao chép và dán mã vào trình soạn thảo văn bản như Notepad có phần mở rộng '.json'

Bước 3)Khởi chạy hub bằng lệnh bên dưới bằng dấu nhắc lệnh

java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hubconfig.json

LƯU Ý: Selenium tệp jar độc lập và tệp json phải có trong cùng một thư mục

Bước 4) Màn hình bên dưới sẽ xuất hiện cho biết hub đã được thiết lập thành công

Selenium Cấu hình lưới bằng tệp JSON

Bước 5) Mở trình duyệt web và thử kết nối với URL bên dưới

http://192.168.43.223:4444/grid/console

LƯU Ý: URL có thể khác nhau tùy theo máy. Phải sử dụng URL theo sau là 'Nút nên đăng ký' trên màn hình trên.

Bước 6) Màn hình Grid Console sẽ xuất hiện cho biết hub đang hoạt động

Selenium Cấu hình lưới bằng tệp JSON

Định cấu hình NODES bằng JSON

Bước 1) Tải xuống tệp cấu hình nút mẫu được cung cấp bởi Selenium sử dụng URL bên dưới

https://github.com/SeleniumHQ/selenium/blob/selenium-2.53.0/java/server/src/org/openqa/grid/common/defaults/DefaultNode.json

LƯU Ý: NẾU BẠN ĐANG SỬ DỤNG SELENIUM 3.0 TRỞ LÊN, PHẢI SỬ DỤNG TỆP JSON DƯỚI ĐÂY

https://github.com/SeleniumHQ/selenium/blob/selenium-3.141.59/java/server/src/org/openqa/grid/common/defaults/DefaultNodeWebDriver.json

Bước 2) Sao chép và dán mã vào trình soạn thảo văn bản như Notepad và lưu tệp có phần mở rộng '.json'

Bước 3)

Chạy lệnh dưới đây trên dấu nhắc lệnh

Java-Dwebdriver.chrome.driver="chromedriver.exe" -Dwebdriver.ie.driver="IEDriverServer.exe" -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node1.json

LƯU Ý: Trước khi chạy lệnh, vui lòng đảm bảo trình điều khiển cho từng trình duyệt đã được tải xuống thư mục máy cục bộ

Bước 4) Màn hình bên dưới sẽ xuất hiện khi nhấn phím enter

Định cấu hình nút bằng JSON

Bước 5) Điều hướng đến bảng điều khiển lưới để xác minh xem các nút đã được định cấu hình thành công chưa

Định cấu hình nút bằng JSON

Các trình duyệt được hiển thị trên bảng điều khiển dạng lưới. Do đó chúng ta có thể chắc chắn rằng các nút được cấu hình thành công.

Các trường hợp thử nghiệm mẫu đang bật Selenium Lưới:

 package com.objectrepository.demo;
 import org.openqa.selenium.*;
 import org.openqa.selenium.remote.DesiredCapabilities;
 import java.net.MalformedURLException;
 import java.net.URL;
 import org.openqa.selenium.remote.RemoteWebDriver;
 import org.testng.Assert;
 import org.testng.annotations.*;

 public class SeleniumGrid {

     WebDriver driver;
     String baseURL, nodeURL;

     @BeforeTest
     public void setUp() throws MalformedURLException {
         baseURL = "https://demo.guru99.com/test/guru99home/";
         nodeURL = "http://192.168.43.223:5566/wd/hub";
         DesiredCapabilities capability = DesiredCapabilities.chrome();
         capability.setBrowserName("chrome");
         capability.setPlatform(Platform.WIN10);
         driver = new RemoteWebDriver(new URL(nodeURL), capability);
     }

     @AfterTest
     public void afterTest() {
         driver.quit();
     }
     @Test
     public void sampleTest() {
         driver.get(baseURL);
         

         if (driver.getPageSource().contains("MOBILE TESTING")) {
             Assert.assertTrue(true, "Mobile Testing Link Found");
         } else {
             Assert.assertTrue(false, "Failed: Link not found");
         }

     }

 }

Đoạn mã trên khởi chạy trình duyệt Chrome và điều hướng đến URL được chỉ định trong biến 'baseURL'. Nó đã xác minh tên liên kết 'Thử nghiệm di động' được hiển thị trên trang

URL trên biến 'nodeURL' có thể được sửa đổi để phản ánh Địa chỉ IP của máy từ xa. Kết quả kiểm tra có thể được xác minh theo mặc định TestNG báo cáo được tạo

Tổng kết

  • Selenium Grid được sử dụng để chạy nhiều thử nghiệm cùng lúc trên nhiều trình duyệt và nền tảng khác nhau.
  • Lưới sử dụng khái niệm nút trung tâm.
  • Trung tâm là điểm trung tâm để bạn tải các bài kiểm tra của mình.
  • Các nút là Selenium các phiên bản sẽ thực thi các bài kiểm tra mà bạn đã tải trên trung tâm.
  • Để cài đặt Selenium Grid, bạn chỉ cần tải xuống Selenium Tệp jar máy chủ - cùng một tệp được sử dụng khi chạy Selenium thử nghiệm RC.
  • Có 2 cách để xác minh xem hub có đang chạy hay không: một là thông qua dấu nhắc lệnh và cách kia là thông qua trình duyệt.
  • Để chạy tập lệnh kiểm tra trên Lưới, bạn nên sử dụng các đối tượng DesiredCapabilities và RemoteWebDriver.
  • DesiredCapabilites được sử dụng để đặt loại trình duyệt và hệ điều hành mà chúng tôi sẽ tự động hóa.
  • RemoteWebDriver được sử dụng để đặt nút (hoặc máy) nào mà thử nghiệm của chúng tôi sẽ chạy.