إعداد عقدة Appium مع Selenium Grid 4
في أتمتة اختبارات الأجهزة المحمولة، يمثل تنفيذ الاختبارات المتوازية، إعداد البنية التحتية لمختلف أنظمة التشغيل، والصيانة المركزية مهامًا شاقة. يمكننا تبسيط هذه العمليات باستخدام Selenium Grid مع إعداد Appium. بدءًا من إصدار Appium 2.X، أصبح تثبيت السائقين لكل نظام تشغيل وجهاز يتم بشكل مستقل.
ملاحظة
إذا كان مشروعك يتطلب مراقبة الأجهزة، إدارة الجلسات، أو التفاعل مع الأجهزة، يُوصى بشدة باستخدام مكون إضافي مثل Appium Device Farm.
فوائد التكامل بين Appium وSelenium Grid
1. بنية تحتية موحدة
تكامل Appium مع Selenium Grid يتيح إدارة جميع الاختبارات — للويب، الأجهزة المحمولة، وتطبيقات سطح المكتب — من إعداد مركزي واحد.
2. سهولة التوسع
يمكنك إضافة عدة عقد Appium إلى الشبكة، مما يتيح إجراء اختبارات متزامنة على أجهزة متعددة.
3. اختبارات متوازية
Appium مع Selenium Grid يدعم تشغيل اختبارات متعددة في وقت واحد على أجهزة أو محاكيات مختلفة، مما يقلل من وقت تنفيذ الاختبارات.
4. تخصيص ديناميكي
الشبكة تقوم بتخصيص عقد Appium المتاحة بشكل ديناميكي لطلبات الاختبار الواردة.
5. صيانة مبسطة
أي تحديث مركزي على الشبكة ينعكس على جميع العقد، مما يجعل الإدارة أسهل.
إعداد Appium مع Selenium Grid
تثبيت Appium
قم بتثبيت Appium على المستوى العالمي باستخدام الأمر التالي:
npm i --location=global appium
قبل بدء مثيل خادم Appium، تأكد من تثبيت السائقين الضروريين عالميًا. بعد ذلك، قم بإعداد ملفات تكوين لكل نظام تشغيل.
إعداد ملفات التكوين
إعداد خادم Appium للأندرويد: appium1.yml
server:
port: 4723
use-drivers:
- uiautomator2
- chromium
default-capabilities:
wdaLocalPort: 8101
mjpegServerPort: 9101
mjpegScreenshotUrl: "http://localhost:9101"
إعداد خادم Appium لنظام iOS: appium2.yml
server:
port: 4733
use-drivers:
- xcuitest
default-capabilities:
wdaLocalPort: 8100
mjpegServerPort: 9100
mjpegScreenshotUrl: "http://localhost:9100"
تشغيل الخوادم
قم بتشغيل الخوادم باستخدام الأوامر التالية:
appium --config appium1.yml
appium --config appium2.yml
للتحقق من حالة الخوادم، افتح الروابط التالية في المتصفح:
تكوين العقد مع Selenium Grid
إعداد عقدة لنظام Android: node1.toml
[server]
port = 5554
[node]
detect-drivers = false
[relay]
url = "http://localhost:4723"
status-endpoint = "/status"
configs = [
"1", "{\"platformName\": \"android\", \"appium:platformVersion\": \"21.0\", \"appium:deviceName\": \"Nexus 5\", \"appium:automationName\": \"UIAutomator2test\" }",
"1", "{\"platformName\": \"android\", \"appium:platformVersion\": \"21.0\", \"appium:deviceName\": \"Samsung Galaxy S8+\", \"appium:automationName\": \"UIAutomator2test\" }",
"2", "{\"platformName\": \"android\", \"appium:platformVersion\": \"21.0\", \"browserName\": \"chrome\", \"appium:automationName\": \"Chromium\" }"
]
قم بتشغيل العقدة باستخدام الأمر التالي:
java -jar selenium-server-4.17.0.jar -p 5554 node --config node1.toml
إعداد عقدة لنظام iOS: node2.toml
[server]
port = 5555
[node]
detect-drivers = false
[relay]
url = "http://localhost:4733"
status-endpoint = "/status"
configs = [
"1", "{\"platformName\": \"iOS\", \"appium:platformVersion\": \"15.5\", \"appium:deviceName\": \"iPhone 13\", \"appium:automationName\": \"XCUITest\"}",
"1", "{\"platformName\": \"iOS\", \"appium:platformVersion\": \"14.0\", \"appium:deviceName\": \"iPhone 12\", \"appium:automationName\": \"XCUITest\"}"
]
قم بتشغيل هذه العقدة على منفذ مختلف:
java -jar selenium-server-4.17.0.jar node -p 5555 --config node2.toml
التحقق من العقد في واجهة المستخدم
بعد التسجيل الناجح، يمكنك رؤية هذه العقد في واجهة المستخدم لشبكة Selenium Grid.
تكامل العقد مع الخادم المركزي
قبل تسجيل العقدة مع الخادم المركزي، تأكد من إضافة الأجهزة الحقيقية أو المحاكيات إلى جهاز المضيف لخادم Appium. تأكد أيضًا من تمرير الأسماء الصحيحة للإعدادات عند إرسال الطلبات من العميل إلى الخادم المركزي.
الخلاصة
تكامل Appium مع Selenium Grid هو خطوة استراتيجية للفرق التي تسعى إلى زيادة تغطية الاختبارات، تحسين الكفاءة، وتحقيق الاستفادة القصوى من الموارد مع الحفاظ على المرونة في عمليات الاختبار.