Selenium شرح الشبكة: إعداد مركز وعقدة
⚡ ملخص ذكي
Selenium يُجري Grid اختبارات متعددة على مختلف المتصفحات وأنظمة التشغيل والأجهزة بالتوازي باستخدام بنية مركزية وعقدية. يقوم المركز بتحميل الاختبارات على جهاز واحد بينما تُنفذها العقد على أجهزة أخرى، مما يُتيح تغطية أسرع عبر المتصفحات من خلال سطر الأوامر أو تكوين JSON.

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

المحاور
- المحور هو النقطة المركزية التي يمكنك تحميل اختباراتك إليها.
- يجب أن يكون هناك محور واحد فقط في الشبكة.
- يتم تشغيل المحور فقط على جهاز واحد، على سبيل المثال، جهاز كمبيوتر يعمل بنظام التشغيل الخاص به Windows 7 ومتصفحه هو IE.
- الجهاز الذي يحتوي على المركز هو المكان الذي سيتم فيه إجراء الاختبارات، ولكنك ستشاهد المتصفح يتم تشغيله تلقائيًا على العقدة.
العقد
- العقد هي Selenium المثيلات التي ستنفذ الاختبارات التي قمت بتحميلها على المركز.
- يمكن أن تكون هناك عقدة واحدة أو أكثر في الشبكة.
- يمكن إطلاق العقد على أجهزة متعددة باستخدام منصات ومتصفحات مختلفة.
- لا يلزم أن تكون الأجهزة التي تقوم بتشغيل العقد هي نفس منصة المحور.
Selenium يستخدم Grid مفهوم العقدة المحورية حيث تقوم فقط بإجراء الاختبار على جهاز واحد يسمى a محور، ولكن سيتم التنفيذ بواسطة أجهزة مختلفة تسمى العقد.
كيفيه التنصيب Selenium شبكة؟
في هذا القسم، سوف تستخدم جهازين. سيكون الجهاز الأول هو النظام الذي سيقوم بتشغيل المحور بينما سيقوم الجهاز الآخر بتشغيل العقدة. من أجل التبسيط، دعونا نسمي الجهاز الذي يعمل فيه المحور باسم "الجهاز أ" بينما الجهاز الذي تعمل فيه العقدة سيكون "الجهاز ب". من المهم أيضًا ملاحظة عناوين IP الخاصة بهم. لنفترض أن الجهاز A لديه عنوان IP هو 2 بينما الجهاز B لديه عنوان IP هو 192.168.1.3.
الخطوة 1) تحميل Selenium خادم من اضغط هنا.
الخطوة 2) يمكنك وضع ملف Selenium خادم ملف .jar في أي مكان على القرص الصلب الخاص بك. ولكن لغرض هذا البرنامج التعليمي، ضعه على محرك الأقراص C لكل من الجهاز A والجهاز B. بعد القيام بذلك، تكون قد انتهيت الآن من التثبيت Selenium الشبكة. ستؤدي الخطوات التالية إلى تشغيل المحور والعقدة.
الخطوة 3)
- سنقوم الآن بإطلاق المركز. انتقل إلى الجهاز أ. باستخدام موجه الأوامر، انتقل إلى جذر محرك الأقراص الخاص بالجهاز أ - C، لأن هذا هو الدليل الذي وضعنا فيه الملف Selenium الخادم.
- في موجه الأوامر، اكتب java -jar selenium-server-standalone-2.30.0.jar -role hub
- يجب أن يتم إطلاق المحور بنجاح. يجب أن يبدو موجه الأوامر الخاص بك مشابهًا للصورة أدناه.
الخطوة 4) هناك طريقة أخرى للتحقق من تشغيل لوحة الوصل وهي استخدام المستعرض. Selenium تستخدم الشبكة، بشكل افتراضي، المنفذ 4444 الخاص بالجهاز A لواجهة الويب الخاصة بها. ما عليك سوى فتح المتصفح والانتقال إلى 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 واجهة الويب الشبكية وتحديث الصفحة. يجب أن نرى شيئا من هذا القبيل.
عند هذه النقطة، قمت بالفعل بتكوين شبكة بسيطة. أنت الآن جاهز لإجراء اختبار عن بعد على الجهاز B.
متى يجب استخدام Selenium شبكة؟
يجب عليك استخدام Selenium الشبكة عندما تريد القيام بأحد أو كلا الإجراءين التاليين:
- قم بإجراء اختباراتك على متصفحات وأنظمة تشغيل وأجهزة مختلفة في نفس الوقت. وهذا يضمن أن التطبيق الذي أنت عليه الاختبار متوافق تمامًا مع مجموعة واسعة من مجموعات أنظمة تشغيل المتصفح.
- توفير الوقت في تنفيذ مجموعات الاختبار الخاصة بك. إذا قمت بإعداد Selenium الشبكة لتشغيل، على سبيل المثال، 4 اختبارات في المرة الواحدة، ثم ستتمكن من إنهاء المجموعة بأكملها بشكل أسرع بنحو 4 مرات.
الشبكة 1.0 مقابل الشبكة 2.0
وفيما يلي الاختلافات الرئيسية بين Selenium الشبكة 1 و 2.
| شبكة 1 | شبكة 2 |
|---|---|
| Selenium لدى Grid 1 جهاز تحكم عن بعد خاص بها يختلف عن جهاز التحكم عن بعد Selenium خادم RC. وهما برنامجان مختلفان. | Selenium تم الآن تجميع الشبكة 2 مع Selenium ملف جرة الخادم |
| تحتاج إلى التثبيت والتكوين Apache النملة أولاً قبل أن تتمكن من استخدام الشبكة 1. | لا تحتاج إلى تثبيت Apache Ant في Grid 2. |
| يمكن أن تدعم فقط Selenium أوامر RC / البرامج النصية. | يمكن أن تدعم كليهما Selenium البرامج النصية RC وWebDriver. |
| يمكنك أتمتة متصفح واحد فقط لكل جهاز تحكم عن بعد. | يمكن لجهاز تحكم عن بعد واحد تشغيل ما يصل إلى 5 متصفحات تلقائيًا. |
Selenium يمكن إعداد الشبكة بطريقتين مختلفتين؛ أحدهما من خلال سطر الأوامر والآخر من خلال ملف التكوين JSON.
تصميم البرامج النصية للاختبار التي يمكن تشغيلها على الشبكة
لتصميم البرامج النصية للاختبار التي سيتم تشغيلها على الشبكة، نحتاج إلى استخدامها القدرات المطلوبة و مبادئ السلوك RemoteWebDriver شاء.
- القدرات المطلوبة يستخدم لتعيين نوع المتصفح و OS أننا سوف أتمتة.
- RemoteWebDriver يُستخدم لتعيين العقدة (أو الجهاز) التي سيتم تشغيل اختبارنا عليها.
لاستخدام ال القدرات المطلوبة الكائن، يجب عليك أولاً استيراد هذه الحزمة
لاستخدام ال RemoteWebDriver كائن، يجب عليك استيراد هذه الحزم.
استخدام كائن DesiredCapabilites
انتقل إلى واجهة الويب الخاصة بـ Grid وقم بالتمرير فوق صورة المتصفح الذي تريد تشغيله تلقائيًا. يحيط علما منصة، و مبادئ السلوك اسم المتصفح أظهر بواسطة تلميح الأداة.
في هذه الحالة، النظام الأساسي هو “XP” واسم المتصفح هو “Firefox".
سوف نستخدم النظام الأساسي واسم المتصفح في WebDriver الخاص بنا كما هو موضح أدناه (بالطبع تحتاج إلى استيراد الحزم الضرورية أولاً).
باستخدام كائن RemoteWebDriver
قم باستيراد الحزم الضرورية لـ RemoteWebDriver ثم قم بتمرير كائن DesiredCapabilities الذي أنشأناه أعلاه كمعلمة لكائن 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()); } }
يجب أن يمر الاختبار.
![]() |
![]() |
Selenium تكوين الشبكة باستخدام ملف JSON
JSON لتقف على Javascript تدوين الكائن. وهو تنسيق قياسي يستخدم لتبادل البيانات بين المتصفح وخادم الويب. Selenium يحتوي على ملف تكوين JSON مدمج يمكن استخدامه لإعداد شبكة Selenium.
فيما يلي الخطوات اللازمة لتكوين شبكة السيلينيوم باستخدام ملف تكوين JSON.
الخطوة 1) قم بتنزيل الكود الخاص بملف التكوين 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: Selenium يجب أن يكون ملف jar المستقل وملف json موجودين في نفس الدليل
الخطوة 4) ستظهر الشاشة أدناه التي تشير إلى أنه تم إعداد المحور بنجاح
الخطوة 5) افتح متصفح الويب وحاول الاتصال بالرابط أدناه URL
http://192.168.43.223:4444/grid/console
NOTE: استخدم URL قد يختلف ذلك من جهاز لآخر. URL يجب استخدام الخيار التالي: "يجب على العقد التسجيل في" الموجود على الشاشة أعلاه.
الخطوة 6) ستظهر شاشة وحدة تحكم الشبكة والتي تشير إلى أن المحور قيد التشغيل
تكوين العقد باستخدام JSON
الخطوة 1) قم بتنزيل ملف تكوين العقدة النموذجي المقدم من Selenium باستخدام ما يلي URL
NOTE: إذا كنت تستخدم SELENIUM 3.0 أو إصدارًا أحدث، فيجب استخدام ملف 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) ستظهر الشاشة أدناه عند الضغط على مفتاح الإدخال
الخطوة 5) انتقل إلى وحدة تحكم الشبكة للتحقق مما إذا تم تكوين العقد بنجاح
يتم عرض المتصفحات على لوحة التحكم الشبكية. وبالتالي يمكننا التأكد من أن العقد تم تكوينها بنجاح.
عينة من حالات الاختبار قيد التشغيل Selenium جريد:
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"); } } }
يقوم الكود أعلاه بتشغيل متصفح كروم والانتقال إلى URL المحدد في "القاعدة"URLمتغير. وقد تحقق من ظهور اسم الرابط "اختبار الجوال" على الصفحة
URL على "العقدة"URLيمكن تعديل المتغير ليعكس عنوان IP الخاص بالجهاز البعيد. ويمكن التحقق من نتيجة الاختبار على الإعدادات الافتراضية. TestNG تم إنشاء التقرير







.png)






