البرنامج التعليمي لشبكة السيلينيوم: إعداد المحور والعقدة (مثال)

ما هي شبكة السيلينيوم؟

شبكة السيلينيوم هو جزء من مجموعة السيلينيوم المتخصصة في إجراء اختبارات متعددة عبر متصفحات وأنظمة تشغيل وأجهزة مختلفة بالتوازي. يتم تحقيق ذلك عن طريق توجيه أوامر مثيلات المتصفح البعيد حيث يعمل الخادم كمحور. يحتاج المستخدم إلى تكوين الخادم البعيد من أجل تنفيذ الاختبارات.

لدى شبكة السيلينيوم إصداران - الشبكة الأقدم 2 والشبكة الأحدث 1. سنركز فقط على الشبكة 2 لأن الشبكة 2 يتم إهمالها تدريجيًا من قبل فريق السيلينيوم.

هندسة شبكة السيلينيوم

تحتوي شبكة السيلينيوم على بنية محورية وعقدية.

هندسة شبكة السيلينيوم
هندسة شبكة السيلينيوم

محور

  • المحور هو النقطة المركزية التي يمكنك تحميل اختباراتك إليها.
  • يجب أن يكون هناك محور واحد فقط في الشبكة.
  • يتم تشغيل المحور فقط على جهاز واحد، على سبيل المثال، جهاز كمبيوتر يعمل بنظام التشغيل Windows 7 ومتصفحه هو IE.
  • الجهاز الذي يحتوي على المركز هو المكان الذي سيتم فيه إجراء الاختبارات، ولكنك ستشاهد المتصفح يتم تشغيله تلقائيًا على العقدة.

العقد

  • العقد هي مثيلات السيلينيوم التي ستقوم بتنفيذ الاختبارات التي قمت بتحميلها على المركز.
  • يمكن أن تكون هناك عقدة واحدة أو أكثر في الشبكة.
  • يمكن إطلاق العقد على أجهزة متعددة باستخدام منصات ومتصفحات مختلفة.
  • لا يلزم أن تكون الأجهزة التي تقوم بتشغيل العقد هي نفس منصة المحور.

تستخدم شبكة السيلينيوم مفهوم العقدة المحورية حيث تقوم فقط بإجراء الاختبار على جهاز واحد يسمى a محور، ولكن سيتم التنفيذ بواسطة أجهزة مختلفة تسمى العقد

كيفية إعداد شبكة السيلينيوم؟

في هذا القسم، سوف تستخدم جهازين. سيكون الجهاز الأول هو النظام الذي سيقوم بتشغيل المحور بينما سيقوم الجهاز الآخر بتشغيل العقدة. من أجل التبسيط، دعونا نسمي الجهاز الذي يعمل فيه المحور باسم "الجهاز أ" بينما الجهاز الذي تعمل فيه العقدة سيكون "الجهاز ب". من المهم أيضًا ملاحظة عناوين IP الخاصة بهم. لنفترض أن الجهاز A لديه عنوان IP هو 2 بينما الجهاز B لديه عنوان IP هو 192.168.1.3.

الخطوة 1) قم بتنزيل خادم السيلينيوم من هنا.

إعداد شبكة السيلينيوم

الخطوة 2) يمكنك وضع ملف Selenium Server .jar في أي مكان على محرك الأقراص الثابتة لديك. ولكن لغرض هذا البرنامج التعليمي، ضعه على محرك الأقراص C لكل من الجهاز A والجهاز B. بعد القيام بذلك، تكون قد انتهيت الآن من تثبيت شبكة السيلينيوم. المتابعةwing ستطلق الخطوات المحور والعقدة.

الخطوة 3)

  • سنقوم الآن بإطلاق المركز. انتقل إلى الجهاز A. باستخدام موجه الأوامر، انتقل إلى جذر محرك الأقراص C في الجهاز A، لأن هذا هو الدليل الذي وضعنا فيه خادم السيلينيوم.
  • في موجه الأوامر، اكتب Java -jar selenium-server-standalone-2.30.0.jar -مركز الأدوار
  • يجب أن يتم إطلاق المحور بنجاح. يجب أن يبدو موجه الأوامر الخاص بك مشابهًا للصورة أدناه.

إعداد شبكة السيلينيوم

الخطوة 4) هناك طريقة أخرى للتحقق من تشغيل لوحة الوصل وهي استخدام المستعرض. تستخدم شبكة السيلينيوم، بشكل افتراضي، منفذ الجهاز A رقم 4444 لواجهة الويب الخاصة بها. ما عليك سوى فتح المتصفح والانتقال إلى http://localhost:4444/grid/console

إعداد شبكة السيلينيوم

يمكنك أيضًا التحقق مما إذا كان الجهاز B يمكنه الوصول إلى واجهة الويب الخاصة بلوحة الوصل عن طريق تشغيل متصفح هناك والانتقال إلى حيث يجب أن يكون "iporhostnameofmachineA" هو عنوان IP أو اسم المضيف للجهاز الذي يعمل عليه لوحة الوصل. نظرًا لأن عنوان IP الخاص بالجهاز "أ" هو 192.168.1.3، فيجب عليك الكتابة في المتصفح الموجود على الجهاز "ب". http://192.168.1.3:4444/grid/console

الخطوة 5)

  • الآن بعد أن تم إعداد المحور بالفعل، سنقوم بإطلاق العقدة. انتقل إلى الجهاز B وقم بتشغيل موجه الأوامر هناك.
  • انتقل إلى جذر محرك الأقراص C واكتب الرمز أدناه. استخدمنا عنوان IP 192.168.1.3 لأن هذا هو المكان الذي يعمل فيه المحور. استخدمنا أيضًا المنفذ 5566 على الرغم من أنه يمكنك اختيار أي رقم منفذ مجاني تريده.
  • ملاحظة: عليك الآن إعطاء المسار لبرنامج تشغيل Gecko في حالة استخدامه Firefox. هنا هو الكود المحدث الذي يجب استخدامه
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

إعداد شبكة السيلينيوم

  • عندما تضغط على Enter، يجب أن يكون موجه الأوامر مشابهًا للصورة أدناه.

إعداد شبكة السيلينيوم

الخطوة 6) انتقل إلى واجهة الويب Selenium Grid وقم بتحديث الصفحة. يجب أن نرى شيئا من هذا القبيل.

إعداد شبكة السيلينيوم

عند هذه النقطة، قمت بالفعل بتكوين شبكة بسيطة. أنت الآن جاهز لإجراء اختبار عن بعد على الجهاز B.

متى تستخدم شبكة السيلينيوم؟

يجب عليك استخدام شبكة السيلينيوم عندما تريد القيام بأحد الأمرين أو كليهماwing:

  • قم بإجراء اختباراتك على متصفحات وأنظمة تشغيل وأجهزة مختلفة في نفس الوقت. وهذا يضمن أن التطبيق الذي أنت عليه الاختبار متوافق تمامًا مع مجموعة واسعة من مجموعات أنظمة تشغيل المتصفح.
  • توفير الوقت في تنفيذ مجموعات الاختبار الخاصة بك. إذا قمت بإعداد شبكة السيلينيوم لإجراء 4 اختبارات في المرة الواحدة، على سبيل المثال، فستتمكن من إنهاء المجموعة بأكملها بشكل أسرع بنحو 4 مرات.

الشبكة 1.0 مقابل الشبكة 2.0

فولوwing هي الاختلافات الرئيسية بين شبكة السيلينيوم 1 و 2.

شبكة 1 شبكة 2
يحتوي Selenium Grid 1 على جهاز تحكم عن بعد خاص به يختلف عن خادم Selenium RC. وهما برنامجان مختلفان. تم الآن تضمين Selenium Grid 2 مع ملف Selenium Server jar
تحتاج إلى التثبيت والتكوين أباتشي النملة أولاً قبل أن تتمكن من استخدام الشبكة 1. لا تحتاج إلى تثبيت Apache Ant في Grid 2.
يمكن أن يدعم فقط أوامر/برامج السيلينيوم RC. يمكن أن يدعم كلاً من البرامج النصية Selenium RC وWebDriver.
يمكنك أتمتة متصفح واحد فقط لكل جهاز تحكم عن بعد. يمكن لجهاز تحكم عن بعد واحد تشغيل ما يصل إلى 5 متصفحات تلقائيًا.

يمكن إعداد شبكة السيلينيوم بطريقتين مختلفتين؛ أحدهما من خلال سطر الأوامر والآخر من خلال ملف التكوين JSON.

تصميم البرامج النصية للاختبار التي يمكن تشغيلها على الشبكة

لتصميم البرامج النصية للاختبار التي سيتم تشغيلها على الشبكة، نحتاج إلى استخدامها القدرات المطلوبة و RemoteWebDriver شاء.

  • القدرات المطلوبة يستخدم لتعيين نوع المتصفح و OS أننا سوف أتمتة.
  • RemoteWebDriver يُستخدم لتعيين العقدة (أو الجهاز) التي سيتم تشغيل اختبارنا عليها.

لاستخدام ال القدرات المطلوبة الكائن، يجب عليك أولاً استيراد هذه الحزمة

تصميم البرامج النصية للاختبار التي يمكن تشغيلها على الشبكة

لاستخدام ال RemoteWebDriver كائن، يجب عليك استيراد هذه الحزم.

تصميم البرامج النصية للاختبار التي يمكن تشغيلها على الشبكة

استخدام كائن DesiredCapabilites

انتقل إلى واجهة الويب الخاصة بـ Grid وقم بالتمرير فوق صورة المتصفح الذي تريد تشغيله تلقائيًا. يحيط علما منصة، و اسم المتصفح أظهر بواسطة تلميح الأداة.

استخدام كائن DesiredCapabilites

في هذه الحالة، النظام الأساسي هو “XP” واسم المتصفح هو “Firefox".

سوف نستخدم النظام الأساسي واسم المتصفح في WebDriver الخاص بنا كما هو موضح أدناه (بالطبع تحتاج إلى استيراد الحزم الضرورية أولاً).

استخدام كائن DesiredCapabilites

باستخدام كائن RemoteWebDriver

قم باستيراد الحزم الضرورية لـ RemoteWebDriver ثم قم بتمرير كائن DesiredCapabilities الذي أنشأناه أعلاه كمعلمة لكائن RemoteWebDriver.

استخدام كائن RemoteWebDriver

تشغيل حالة اختبار نموذجية على الشبكة

يوجد أدناه برنامج WebDriver بسيط تستنج الكود الذي يمكنك إنشاؤه فيه Eclipse على الجهاز أ. بمجرد تشغيله، سيتم تنفيذ الأتمتة على الجهاز ب.

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()); } 
} 

يجب أن يمر الاختبار.

تشغيل حالة اختبار نموذجية على الشبكة تشغيل حالة اختبار نموذجية على الشبكة

تكوين شبكة السيلينيوم باستخدام ملف JSON

يرمز JSON إلى تدوين كائن Javascript. وهو تنسيق قياسي يستخدم لتبادل البيانات بين المتصفح وخادم الويب. يحتوي السيلينيوم على ملف تكوين JSON مدمج يمكن استخدامه لإعداد شبكة السيلينيوم.

فيما يلي خطوات تكوين شبكة السيلينيوم باستخدام ملف التكوين JSON.

الخطوة 1) قم بتنزيل الكود الخاص بملف التكوين JSON باستخدام المسار أدناه

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

ها هو الكود

{
	  "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
}

الخطوة 2) انسخ الكود والصقه في محرر نصوص مثل Notepad ذو الامتداد ".json"

الخطوة 3)قم بتشغيل المحور باستخدام الأمر أدناه باستخدام موجه الأوامر

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

NOTE: يجب أن يكون ملف jar المستقل للسيلينيوم وملف json موجودين في نفس الدليل

الخطوة 4) ستظهر الشاشة أدناه التي تشير إلى أنه تم إعداد المحور بنجاح

تكوين شبكة السيلينيوم باستخدام ملف JSON

الخطوة 5) افتح متصفح الويب وحاول الاتصال بعنوان URL أدناه

http://192.168.43.223:4444/grid/console

NOTE: قد يختلف عنوان URL من جهاز إلى آخر. يجب استخدام عنوان URL متبوعًا بـ "يجب على العقد التسجيل في" على الشاشة أعلاه.

الخطوة 6) ستظهر شاشة وحدة تحكم الشبكة والتي تشير إلى أن المحور قيد التشغيل

تكوين شبكة السيلينيوم باستخدام ملف JSON

تكوين العقد باستخدام JSON

الخطوة 1) قم بتنزيل ملف تكوين العقدة النموذجي المقدم من السيلينيوم باستخدام عنوان URL أدناه

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

NOTE: إذا كنت تستخدم السيلينيوم 3.0 أو أعلى، فيجب استخدام ملف JSON أدناه

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

الخطوة 2) انسخ الكود والصقه في محرر نصوص مثل Notepad واحفظ الملف بالملحق ".json"

الخطوة 3)

قم بتشغيل الأمر أدناه في موجه الأوامر

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

NOTE: قبل تشغيل الأمر، يرجى التأكد من تنزيل برامج التشغيل لكل متصفح على دليل الجهاز المحلي

الخطوة 4) ستظهر الشاشة أدناه عند الضغط على مفتاح الإدخال

تكوين العقد باستخدام JSON

الخطوة 5) انتقل إلى وحدة تحكم الشبكة للتحقق مما إذا تم تكوين العقد بنجاح

تكوين العقد باستخدام JSON

يتم عرض المتصفحات على وحدة تحكم الشبكة. ومن ثم يمكننا التأكد من تكوين العقد بنجاح.

حالات اختبار العينة على شبكة السيلينيوم:

 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 = "http://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");
         }

     }

 }

يقوم الكود أعلاه بتشغيل متصفح Chrome وينتقل إلى عنوان URL المحدد في المتغير "baseURL". لقد تم التحقق من ظهور اسم الرابط "اختبار الهاتف المحمول" على الصفحة

يمكن تعديل عنوان URL الموجود على المتغير "nodeURL" ليعكس عنوان IP الخاص بالجهاز البعيد. يمكن التحقق من نتيجة الاختبار من خلال تقرير TestNG الافتراضي الذي تم إنشاؤه

نبذة عامة

  • يتم استخدام شبكة السيلينيوم لإجراء اختبارات متعددة في نفس الوقتneoيستخدم على متصفحات ومنصات مختلفة.
  • تستخدم الشبكة مفهوم العقدة المحورية.
  • المحور هو النقطة المركزية حيث يمكنك تحميل اختباراتك.
  • العقد هي مثيلات السيلينيوم التي ستقوم بتنفيذ الاختبارات التي قمت بتحميلها على المركز.
  • لتثبيت Selenium Grid، ما عليك سوى تنزيل ملف Selenium Server jar - وهو نفس الملف المستخدم في تشغيل اختبارات Selenium RC.
  • توجد طريقتان للتحقق مما إذا كان المحور قيد التشغيل: إحداهما من خلال موجه الأوامر، والأخرى من خلال المستعرض.
  • لتشغيل البرامج النصية للاختبار على الشبكة، يجب عليك استخدام كائنات DesiredCapabilities وRemoteWebDriver.
  • يتم استخدام DesiredCapabilites لتعيين نوع المتصفح ونظام التشغيل الذي سنقوم بتشغيله تلقائيًا.
  • يتم استخدام RemoteWebDriver لتعيين العقدة (أو الجهاز) التي سيتم تشغيل اختبارنا عليها.