Thiết lập Lưới Selenium để kiểm tra Selenium phân tán



Blog này sẽ giúp bạn hiểu sự cần thiết của Selenium Grid và những lợi ích của nó. Đọc nó để thiết lập Selenium Grid đầu tiên của bạn bằng cách định cấu hình trung tâm và các nút.

Các blog khác trong loạt bài hướng dẫn Selenium này nói về việc tạo các trường hợp thử nghiệm và thực hiện các trường hợp thử nghiệm đó theo trình tự và song song. Vì vậy, kỹ thuật cuối cùng còn lại để thảo luận là thực thi các trường hợp kiểm thử trong các máy từ xa. Selenium Grid có thể được sử dụng để thực hiện các bài kiểm tra này trên các máy / máy chủ từ xa. Do đó, đó là chủ đề thảo luận của blog ngày hôm nay.

  1. Tại sao và khi nào sử dụng Selenium Grid?
  2. Selenium Grid là gì?
  3. Selenium Grid 1 so với Selenium Grid 2
  4. Kiến trúc của Selenium Grid
  5. Xây dựng lưới Selenium

Tại sao & Khi nào sử dụng Selenium Grid?

Có rất nhiều trình duyệt web đang được sử dụng ngày nay. Người dùng có thể đang sử dụng Chrome hoặc Firefox hoặc Safari hoặc Opera hoặc thậm chí Internet Explorer để đọc blog này. Họ có thể đang sử dụng các phiên bản trình duyệt khác nhau. Họ cũng có thể đang chạy các trình duyệt này trên bất kỳ hệ điều hành nào, có thể là Windows hoặc Mac hoặc Ubuntu hoặc bất kỳ bản phân phối nào khác của Linux.





mã java để chấm dứt chương trình

Điều gì sẽ xảy ra nếu người dùng nhìn thấy thứ gì đó quan trọng trên internet? Một cái gì đó quan trọng đối với doanh nghiệp của bạn. Bạn có muốn đi thêm quãng đường đó (thử nghiệm ứng dụng web) chỉ để đảm bảo rằng người dùng và / hoặc khách hàng của bạn có được trải nghiệm người dùng tốt nhất không? Bạn sẽ, phải không?

Bạn cũng nên!



Nhưng câu hỏi đặt ra là nó khả thi đến mức nào? Bạn sẽ có thể dành thời gian thử nghiệm ứng dụng web của mình trên mọi hệ điều hành có thể và mọi trình duyệt web có sẵn không? Hmm, nghe có vẻ hơi khó khăn. Đây là nơi Selenium Grid phù hợp với hóa đơn và giúptiết kiệm thời gian và năng lượng của bạn.

Ngoài vấn đề này, một câu hỏi nữa được đặt ra, Liệu có khả thi để thiết lập cơ sở hạ tầng lưới điện Selenium bằng hệ thống cục bộ không? Duy trì một mạng lưới với tất cả các trình duyệt và hệ điều hành được yêu cầu là một thách thức. Đối với điều này, có nhiều nền tảng trực tuyến cung cấp Lưới Selenium trực tuyến mà bạn có thể truy cập để chạy các tập lệnh tự động hóa selen của mình. Ví dụ, bạn có thể sử dụng LambdaTest . Nó có hơn 2000 môi trường trình duyệt mà qua đó bạn có thể chạy thử nghiệm của mình và thử nghiệm thực sự tự động trên toàn trình duyệt.

Selenium Grid là gì?

Selenium Grid là một công cụ quan trọng khác trong bộ công cụ Selenium. Grid có khả năng phối hợp các bài kiểm tra WebDriver / kiểm tra RC có thể chạy đồng thời trên nhiều trình duyệt web hoặc có thể được khởi tạo trên các hệ điều hành khác nhau hoặc thậm chí được lưu trữ trên các máy khác nhau.



lưới làm việc - lưới selenVậy, làm thế nào để điều đó diễn ra? Grid sử dụng kiến ​​trúc Hub-Node trong đó có một Hub đóng vai trò chủ và một hoặc nhiều Nút hoạt động như nô lệ.

Điều này có nghĩa là, nếu bạn có tổng cộng 100 công việc / bài kiểm tra cần được thực hiện, thì các bài kiểm tra có thể được thực hiện đồng thời trên 5 máy, trong đó mỗi máy sẽ chạy 20 bài kiểm tra. Trên thực tế, bạn có thể thực hiện các bài kiểm tra này trong các kết hợp khác nhau của hệ điều hành và trình duyệt. Mỗi máy ở đây có thể thuộc một hệ điều hành khác nhau và bên trong mỗi hệ điều hành, các bài kiểm tra có thể được thực hiện trên các trình duyệt khác nhau.

Hành động này sẽ dễ dàng tiết kiệm rất nhiều thời gian của bạn trong việc thực hiện thử nghiệm. Nếu bạn xem xét ví dụ trên, thì chúng ta có thể giảm thời gian thực thi xuống khoảng 1/5 tổng thời gian thực hiện các bài kiểm tra trên một máy.

Nếu bạn có thể nhớ lại từ các blog trước đây của tôi, tôi đã đề cập vô số lần rằng Grid là một phần của dự án Selenium kể từ khi thành lập, tức là kể từ Selenium v1. Selenium Grid cũng là một phần của Selenium v2 và hiện tại nó là một phần của Selenium v3. Không có nhiều sự khác biệt trong v2 và v3 của Selenium Grid. Tuy nhiên, v1 có rất nhiều điểm khác biệt so sánh. Vậy hãyhiểu sự khác biệt giữa v1 và v2.

Selenium Grid 1 so với Selenium Grid 2

Sự khác biệt cơ bản giữa Grid v1.0 và v2.0 là RC được sử dụng trong Grid 1 và WebDriver được sử dụng trong Grid 2. Bảng dưới đây giải thích sự khác biệt chi tiết.

Lưới 1 Lưới 2
Yêu cầu phải cài đặt Apache AntKhông cần cài đặt Apache Ant
Có điều khiển từ xa riêng (Điều này khác với máy chủ RC)Đi kèm với tệp jar Máy chủ Selenium
Chỉ hỗ trợ các lệnh Selenium RCHỗ trợ cả tập lệnh Selenium 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ừ xaBạn có thể tự động hóa tối đa 5 trình duyệt cho mỗi điều khiển từ xa


Bây giờ chúng ta đã tìm hiểu sự khác biệt cơ bản giữa hai phiên bản, hãy cùng tìm hiểu sâu hơn về Selenium Grid.

Kiến trúc của lưới Selenium

Như tôi đã đề cập trước đó, Grid hoạt động trên cơ sở một Hub và nhiều Node. Nhưng, Hub và Nodes là gì và chúng làm gì?

Trung tâm

Trong bất kỳ thiết lập Grid nào, chỉ có thể có một Hub và đó sẽ là điểm trung tâm trong thiết lập Grid đó. Tất cả các bài kiểm tra cần được thực hiện sẽ được tải ở đây. Mặc dù các bài kiểm tra đang được tải ở đây, chúng sẽ chỉ được thực hiện tại các nút. Chúng tôi có thể định cấu hình bất kỳ máy chủ nào làm Trung tâm của chúng tôi và nó sẽ điều phối các hoạt động thực thi thử nghiệm trên các máy chủ khác.

Để điều này xảy ra, trước tiên chúng ta cần định cấu hình Hub, sau đó tạo các Nút khác để đăng ký với Hub. Trước khi đi vào quá nhiều chi tiết, hãy để tôi chỉ cho bạn lệnh định cấu hình Hub.

Định cấu hình Trung tâm

Trước hết, bạn cần tải xuống tệp JAR máy chủ Selenium từ trang web của Seleniumhq. Liên kết là đây . Bạn cũng cần đảm bảo rằng Java đã được cài đặt trong hệ thống của bạn và các biến môi trường đã được thiết lập.

Khi bạn đã tải xuống tệp jar, bạn cần phải đặt nó vào một thư mục thích hợp. Để thuận tiện cho tôi, tôi đã tải xuống và đặt nó vào thư mục Selenium trong C Drive. Bạn cũng nên tải xuống tệp jar và đặt nó trong một thư mục tương tự trong tất cả các nút khác.

quá mức trong học máy là gì

Để cấu hình Hub, bạn cần chạy lệnh trong cửa sổ lệnh. Lệnh có trong đoạn mã dưới đây.

C: UsersVardhan> cd .. C: Users> cd .. C:> cd Selenium C: Selenium> java -jar selenium-server-standalone-3.4.0.jar -role hub

Các selenium-server-standalone-3.4.0.jar là tên của tệp jar mà tôi đã tải xuống.
Các -vai trò cờ được sử dụng để đặt máy chủ cụ thể đó làm Trung tâm. Khi bạn nhấn enter, bạn sẽ nhận được kết quả bên dưới trên màn hình.

Trong trường hợp bạn không nhận thấy ảnh chụp màn hình ở trên, hãy xem lại. Nó nói rằng ' -Các mã nên đăng ký http://192.168.0.11:4444/grid/register ‘. Bây giờ Hub đã được định cấu hình, chúng ta cần thiết lập các Nút và kết nối chúng với Hub này.

192.168.0.11 là địa chỉ IP của Hub và mọi Node phải kết nối với địa chỉ IP này. 4444 là số cổng mặc định mà Selenium Grid được lưu trữ và lắng nghe các yêu cầu. Nếu một số dịch vụ khác đang chạy trên cổng 4444 và bạn muốn Selenium Grid được lưu trữ trên một cổng khác, thì bạn có thể làm điều đó bằng cách chỉ định -Hải cảng cờ theo sau là số cổng.

Các nút

Các nút là máy chủ mà các bài kiểm tra được chạy trên đó. Các thử nghiệm này sẽ được khởi động bởi Hub. Hub có thể khởi chạy một hoặc nhiều Node trên các máy ở xa hoặc trên cùng một máy nơi đặt Hub. Trên mỗi Nút, các hệ điều hành khác nhau có thể được khởi động và trên các hệ điều hành khác nhau, các phiên bản khác nhau của cùng một trình duyệt hoặc các trình duyệt khác nhau có thể được khởi chạy.

Cấu hình các nút

Tương tự như Hub, trước tiên bạn cần tải xuống tệp Jar trong các máy Node và đặt nó trên Ổ C hoặc bất kỳ thư mục chung nào khác để thuận tiện cho bạn. Sau đó, bạn có thể chạy lệnh dưới đây trong dấu nhắc lệnh của Windows. Nếu bạn đang khởi chạy ngay cả Node trên cùng một máy với Hub của mình, thì bạn cần chạy lệnh bằng cách bắt đầu một dấu nhắc lệnh khác.

java -Dwebdriver.chrome.driver = E: chromedriver.exe -jar selenium-server-standalone-3.4.0.jar -role node -hub http://192.168.0.11:4444/grid/register

Chỉ có một số khác biệt trong lệnh này so với lệnh cần thiết để khởi động Hub.
-Dwebdriver.chrome.driver = E: chromedriver.exe được sử dụng để đặt đường dẫn của trình điều khiển trình duyệt. Tương tự như thiết lập đường dẫn của trình điều khiển trình duyệt trong mã WebDriver của bạn, bạn chỉ định nó ở đây để cho phép Node thực hiện kiểm tra. Từ Selenium v3 trở đi, bạn cần tải xuống trình duyệt trình điều khiển cho Firefox. Trình điều khiển trình duyệt cho Firefox là trình điều khiển Gecko. Tuy nhiên, trong phiên bản 1 và 2, bạn cần đặt trình điều khiển trình duyệt cho tất cả các trình duyệt khác ngoài Firefox.
-role node cờ được sử dụng để đặt máy chủ cụ thể đó làm Node.
-hub http://192.168.0.11:4444/grid/register thông báo cho Node kết nối với Hub bằng cách sử dụng địa chỉ IP của Hub. Một điểm quan trọng cần lưu ý là nếu bạn đang khởi chạy bất kỳ Node nào trên cùng một máy với Hub của mình, thì bạn có thể chỉ định ‘ -hub http: // localhost: 4444 / grid / register ‘Trong lệnh thay vì địa chỉ IP của Hub.

Khi bạn nhấn enter, bạn sẽ nhận được kết quả bên dưới trên dấu nhắc lệnh.

Bây giờ, Node đã được kết nối với Hub. Bạn có thể xác minh điều đó bằng cách quay lại dấu nhắc lệnh được sử dụng để khởi động Hub và bạn sẽ nhận thấy thông báo sau: ‘ Đã đăng ký một nút http://192.168.0.11:5555 ‘.

Địa chỉ IP và số cổng là của Node của bạn. Vì tôi có Node trên cùng một máy với Hub của mình nên cổng được sử dụng cho Node là 5555. Khi bạn khởi tạo nó trên một số máy khác, cổng mặc định sẽ được sử dụng.

Khi khởi chạy URL sau trong máy của Trung tâm, bạn sẽ nhận được trạng thái của các Nút được kết nối với Trung tâm của bạn. Xem phần được đánh dấu trong ảnh chụp màn hình bên dưới.

Bây giờ, Selenium Grid của bạn đã được định cấu hình, bạn có thể tiến hành thực thi các tập lệnh thử nghiệm trên Nodes. Hãy để tôi nhấn mạnh lại rằng chúng ta cần chạy các tập lệnh trong Trung tâm của mình và chúng sẽ được thực thi trong các Nút của chúng ta. Tập lệnh được sử dụng để thực hiện các bài kiểm tra tương tự như WebDrivercác bài kiểm tra.

Xây dựng một lưới Selenium

Tôi đã chạy tập lệnh của mình trong IDE Eclipse. Việc thực thi tập lệnh này dựa vào hai gói thư viện quan trọng. họ đang Khả năng mong muốn đối tượng và RemoteWebDriver vật.

Khả năng mong muốn được sử dụng để đặt loại trình duyệt và hệ điều hành của Nút của chúng tôi. Để nhập đối tượng Khả năng mong muốn, hãy sử dụng mã bên dưới.

import org.openqa.selenium.remote.DesosystemCapabilities

RemoteWebDriver được sử dụng để chọn Node mà chúng ta muốn thực hiện kiểm tra. Để nhập đối tượng RemoteWebDriver, hãy sử dụng các dòng mã dưới đây.

import java.net.MalformedURLException import java.net.URL import org.openqa.selenium.remote.RemoteWebDriver

Tôi đã nhập hai gói này cùng với gói chú thích TestNG cho tập lệnh của mình như được hiển thị trong đoạn mã bên dưới. Tôi đã nhập các chú thích TestNG vì tôi đã thực hiện điều này như một bài kiểm tra TestNG để tạo báo cáo chi tiết. Tôi khuyên bạn nên nhập cùng một tập hợp các gói cho mã của bạn.

Khi bạn di chuyển qua các biểu trưng của bất kỳ trình duyệt nào có trong bảng điều khiển Selenium Hub, bạn sẽ nhận được các chi tiết như browserNamenền tảng của Node bạn muốn tự động hóa. Hình ảnh cũng cho biết tôi có thể mở bao nhiêu phiên bản trình duyệt trong Node của mình. Tôi có thể định cấu hình tối đa 5 phiên bản chrome, 5 Firefox và 1 Internet Explorer. Những chi tiết này có trong ảnh chụp màn hình bên dưới.

Bạn có thể sử dụng mã trong đoạn mã dưới đây để thiết lập Grid đầu tiên của mình.

package GridTest import org.testng.annotations.AfterTest import org.testng.annotations.BeforeTest import org.testng.annotations.Test import java.net.MalformedURLException import java.net.URL import org.junit.Assert import org.openqa.selenium .Platform import org.openqa.selenium.WebDriver import org.openqa.selenium.remote.DesnticCapabilities nhập org.openqa.selenium.remote.RemoteWebDriver public class TestGrid {static WebDriver driver static String nodeUrowsception @BeforeTest public voided (thiết lập) nodeUrl = 'http://192.168.0.11:5555/wd/hub' Khả năng mong muốn của khả năng = Des mong muốn.chrome () Khả năng.setBrowserName ('chrome'). ), functions)} @Test public void simpleTest () Edureka ', driver.getTitle ()) @AfterTest public void afterTest () {driver.quit ()}}

Tôi đã chia toàn bộ tập lệnh thử nghiệm thành ba chú thích thử nghiệm. @BeforeTest, @Test và @AfterTest. Trong @BeforeTest, tôi đã sử dụng các đối tượng Des mong muốnCapablities và RemoteWebDriver để định cấu hình Node của mình. Trong @Test, tôi đã yêu cầu Node điều hướng đến trang chủ của Edureka và xác nhận tiêu đề của trang. Trong @AfterTest, tôi đã yêu cầu Node thoát khỏi phiên bản trình duyệt.

Khi thử nghiệm của bạn vượt qua quá trình thực thi, bạn sẽ nhận được kết quả bên dưới.

Ngày 18 tháng 5 năm 2017 3:09:07 PM org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Phương ngữ được phát hiện: OSS PASSED: simpleTest ===================== ========================== Kiểm tra mặc định Kiểm tra chạy: 1, Không đạt: 0, Bỏ qua: 0 ========== ======================================================= ================================== Bộ mặc định Tổng số lần chạy kiểm tra: 1, Không đạt: 0, Số lần bỏ qua: 0 = ==============================================

Vì điều này được thực hiện như một bài kiểm tra TestNG, bạn sẽ nhận được một báo cáo kiểm tra chi tiết tương tự như ảnh chụp màn hình bên dưới.

Nếu bạn không biết TestNG là gì và cách sử dụng chú thích kiểm tra, hãy đọc blog của tôi về cách sử dụng Selenium WebDriver với TestNG từ loạt bài hướng dẫn về Selenium này.

Bạn có thể xem video bên dưới để chứng kiến ​​phần trình diễn về cách xây dựng Selenium Grid. Người hướng dẫn cung cấp video giải thích các khái niệm tương tự được giải thích trong blog này.

Hướng dẫn sử dụng Selenium Grid cho người mới bắt đầu | Hướng dẫn sử dụng Selenium | Edureka

Vì vậy, điều đó đưa chúng ta đến phần cuối của blog Selenium Grid này. Nếu bạn có bất kỳ nghi ngờ hoặc vấn đề nào với bất kỳ mã / nội dung nào của loạt blog này, vui lòng để lại chúng trong phần nhận xét bên dưới và tôi sẽ giải quyết vấn đề của bạn sớm nhất.

đậu trong java là gì

Nếu bạn muốn tìm hiểu Selenium và xây dựng sự nghiệp trong lĩnh vực thử nghiệm, hãy xem trực tuyến, tương tác của chúng tôi ở đây, đi kèm với hỗ trợ 24 * 7 để hướng dẫn bạn trong suốt thời gian học tập.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần bình luận và chúng tôi sẽ liên hệ lại với bạn.