الإعدادات
تُوثّق هذه الصفحة جميع خيارات الإعداد لخادم WebdriverIO MCP.
إعدادات خادم MCP
يتم إعداد خادم MCP من خلال ملفات إعدادات Claude Desktop أو Claude Code.
الإعداد الأساسي
نظام macOS
قم بتعديل ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}
نظام Windows
قم بتعديل %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}
Claude Code
قم بتعديل ملف .claude/settings.json في مشروعك:
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}
متغيرات البيئة
قم بإعداد اتصال خادم Appium والإعدادات الأخرى عبر متغيرات البيئة.
اتصال Appium
| المتغير | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
APPIUM_URL | string | 127.0.0.1 | اسم مضيف خادم Appium |
APPIUM_URL_PORT | number | 4723 | منفذ خادم Appium |
APPIUM_PATH | string | / | مسار خادم Appium |
مثال باستخدام متغيرات البيئة
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"],
"env": {
"APPIUM_URL": "192.168.1.100",
"APPIUM_URL_PORT": "4724",
"APPIUM_PATH": "/wd/hub"
}
}
}
}
خيارات جلسة المتصفح
الخيارات المتاحة عند بدء جلسة متصفح عبر أداة start_browser.
headless
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
false
تشغيل Chrome في وضع بدون واجهة (بدون نافذة متصفح مرئية). مفيد لبيئات CI/CD أو عندما لا تحتاج لرؤية المتصفح.
windowWidth
- النوع:
number - إلزامي: لا
- القيمة الافتراضية:
1920 - النطاق:
400-3840
عرض نافذة المتصفح الأولي بالبكسل.
windowHeight
- النوع:
number - إلزامي: لا
- الق يمة الافتراضية:
1080 - النطاق:
400-2160
ارتفاع نافذة المتصفح الأولي بالبكسل.
navigationUrl
- النوع:
string - إلزامي: لا
عنوان URL للانتقال إليه فورًا بعد بدء المتصفح. هذا أكثر كفاءة من استدعاء start_browser متبوعًا بـ navigate بشكل منفصل.
مثال: بدء المتصفح والانتقال في استدعاء واحد:
Start Chrome and navigate to https://webdriver.io
خيارات جلسة تطبيقات الهاتف المحمول
الخيارات المتاحة عند بدء جلسة تطبيق محمو ل عبر أداة start_app_session.
خيارات المنصة
platform
- النوع:
string - إلزامي: نعم
- القيم:
iOS|Android
منصة الهاتف المحمول المراد أتمتتها.
platformVersion
- النوع:
string - إلزامي: لا
إصدار نظام التشغيل للجهاز/المحاكي (مثل 17.0 لنظام iOS، 14 لنظام Android).
automationName
- النوع:
string - إلزامي: لا
- القيم:
XCUITest(iOS)،UiAutomator2|Espresso(Android)
محرك الأتمتة المراد استخدامه. القيمة الافتراضية هي XCUITest لنظام iOS وUiAutomator2 لنظام Android.
خيارات الجهاز
deviceName
- النوع:
string - إلزامي: نعم
اسم الجهاز أو المحاكي المراد استخدامه.
أمثلة:
- محاكي iOS:
iPhone 15 Pro,iPad Air (5th generation) - محاكي Android:
Pixel 7,Nexus 5X - الجهاز الحقيقي: اسم الجهاز كما يظهر في نظامك
udid
- النوع:
string - إلزامي: لا (مطلوب لأجهزة iOS الحقيقية)
معرف الجهاز الفريد. مطلوب لأجهزة iOS الحقيقية (معرف من 40 حرفًا) وموصى به لأجهزة Android الحقيقية.
للعثور على UDID:
- iOS: قم بتوصيل الجهاز، افتح Finder/iTunes، انقر على الجهاز → الرقم التسلسلي (انق ر للكشف عن UDID)
- Android: قم بتشغيل
adb devicesفي المحطة الطرفية
خيارات التطبيق
appPath
- النوع:
string - إلزامي: لا*
مسار ملف التطبيق المراد تثبيته وتشغيله.
الصيغ المدعومة:
- محاكي iOS: مجلد
.app - جهاز iOS حقيقي: ملف
.ipa - Android: ملف
.apk
*يجب توفير إما appPath أو noReset: true للاتصال بتطبيق قيد التشغيل بالفعل.
appWaitActivity
- النوع:
string - إلزامي: لا (Android فقط)
النشاط المراد انتظاره عند بدء التطبيق. إذا لم يتم تحديده، سيتم استخدام نشاط التطبيق الرئيسي.
مثال: com.example.app.MainActivity
خيارات حالة الجلسة
noReset
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
false
الحفاظ على حالة التطبيق بين الجلسات. عندما تكون true:
- يتم الحفاظ على بيانات التطبيق (حالة تسجيل الدخول، التفضيلات، إلخ.)
- ستقوم الجلسة بالانفصال بدلاً من الإغلاق (تبقي التطبيق قيد التشغيل)
- مفيد لاختبار رحلات المستخدم عبر جلسات متعددة
- يمكن استخدامها بدون
appPathللاتصال بتطبيق قيد التشغيل بالفعل
fullReset
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
true
إعادة ضبط التطبيق بالكامل قبل الجلسة. عندما تكون true:
- iOS: ي قوم بإلغاء تثبيت التطبيق وإعادة تثبيته
- Android: يمسح بيانات التطبيق والذاكرة المؤقتة
- مفيد للبدء بحالة نظيفة
اضبط fullReset: false مع noReset: true للحفاظ على حالة التطبيق بشكل كامل.
مهلة الجلسة
newCommandTimeout
- النوع:
number - إلزامي: لا
- القيمة الافتراضية:
60
المدة (بالثواني) التي سينتظر فيها Appium أمرًا جديدًا قبل افتراض أن العميل قد أغلق وإنهاء الجلسة. قم بزيادة هذه القيمة لجلسات تصحيح الأخطاء الأطول.
أمثلة:
60- القيمة الافتراضية، مناسبة لمعظم عمليات الأتمتة300- 5 دقائق، لتصحيح الأخطاء أو العمليات الأبطأ600- 10 دقائق، للاختبارات طويلة المدة
خيارات المعالجة الآلية
autoGrantPermissions
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
true
منح أذونات التطبيق تلقائيًا عند التثبيت/التشغيل. عندما تكون true:
- يتم منح الأذونات تلقائيًا للكاميرا والميكروفون والموقع وما إلى ذلك
- لا حاجة للتعامل اليدوي مع مربعات حوار الأذونات
- تبسيط الأتمتة من خلال تجنب النوافذ المنبثقة للأذونات
يؤثر هذا الخيار بشكل أساسي على Android. يجب التعامل مع أذونات iOS بشكل مختلف بسبب قيود النظام.
autoAcceptAlerts
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
true
قبول تنبيهات النظام (مربعات الحوار) التي تظهر أثناء الأتمتة تلقائيًا.
أمثلة على التنبيهات المقبولة تلقائيًا:
- "السماح بالإشعارات؟"
- "يرغب التطبيق في الوصول إلى موقعك"
- "السماح للتطبيق بالوصول إلى الصور؟"
autoDismissAlerts
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
false
رفض (إلغاء) تنبيهات النظام بدلاً من قبولها. لها الأولوية على autoAcceptAlerts عند تعيينها إلى true.
تجاوز إعدادات خادم Appium
يمكنك تجاوز اتصال خادم Appium على أساس كل جلسة:
appiumHost
- النوع:
string - إلزامي: لا
اسم مضيف خادم Appium. يتجاوز متغير البيئة APPIUM_URL.
appiumPort
- النوع:
number - إلزامي: لا
منفذ خادم Appium. يتجاوز متغير البيئة APPIUM_URL_PORT.
appiumPath
- النوع:
string - إلزامي: لا
مسار خادم Appium. يتجاوز متغير البيئة APPIUM_PATH.
خيارات اكتشاف العناصر
خيارات لأداة get_visible_elements.
elementType
- النوع:
string - إلزامي: لا
- القيمة الافتراضية:
interactable - القيم:
interactable|visual|all
نوع العناصر المراد إرجاعها:
interactable: الأزرار والروابط وحقول الإدخال وغيرها من العناصر القابلة للنقرvisual: الصور و SVG والعناصر المرئيةall: كل من العناصر التفاعلية والمرئية
inViewportOnly
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
true
إرجاع العناصر المرئية فقط ضمن منفذ العرض الحالي. عند تعيينها إلى false، ترجع جميع العناصر في تسلسل العرض (مفيدة للعثور على العناصر خارج الشاشة).
includeContainers
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
false
تضمين عناصر الحاويات/التخطيط في النتائج. عندما تكون true:
حاويات Android المضمنة:
ViewGroup,FrameLayout,LinearLayoutRelativeLayout,ConstraintLayoutScrollView,RecyclerView
حاويات iOS المضمنة:
View,StackView,CollectionViewScrollView,TableView
مفيدة لتصحيح مشاكل التخطيط أو فهم تسلسل العرض.
includeBounds
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
false
تضمين حدود/إحداثيات العنصر (x, y, width, height) في الاستجابة. قم بتعيينها إلى true من أجل:
- التفاعلات المستندة إلى الإحداثيات
- تصحيح أخطاء التخطيط
- تحديد موضع العناصر المرئية
خيارات تقسيم الصفحات
للصفحات الكبيرة ذات العناصر العديدة، استخدم تقسيم الصفحات لتقليل استخدام الرموز:
limit
- النوع:
number - إلزامي: لا
- القيمة الافتراضية:
0(غير محدود)
الحد الأقصى لعدد العناصر المراد إرجاعها.
offset
- النوع:
number - إلزامي: لا
- القيمة الافتراضية:
0
عدد العناصر التي يتم تخطيها قبل إرجاع النتائج.
مثال: الحصول على العناصر 21-40:
Get visible elements with limit 20 and offset 20
خيارات شجرة إمكانية الوصول
خيارات لأداة get_accessibility (للمتصفح فقط).
limit
- النوع:
number - إلزامي: لا
- القيمة الافتراضية:
100
الحد الأقصى لعدد العقد المراد إرجاعها. استخدم 0 للحصول على عدد غير محدود (غير موصى به للصفحات الكبيرة).
offset
- النوع:
number - إلزامي: لا
- القيمة الافتراضية:
0
عدد العقد التي يتم تخطيها لتقسيم الصفحات.
roles
- النوع:
string[] - إلزامي: لا
- القيمة الافتراضية: كل الأدوار
تصفية أدوار إمكانية الوصول المحددة.
الأدوار الشائعة: button, link, textbox, checkbox, radio, heading, img, listitem
مثال: الحصول على الأزرار والروابط فقط:
Get accessibility tree filtered to button and link roles
namedOnly
- النوع:
boolean - إلزامي: لا
- القيمة الافتراضية:
true
إرجاع العقد التي لها اسم/تسمية فقط. تصفية الحاويات المجهولة وتقليل الضوضاء في النتائج.