الأسئلة الشائعة
الأسئلة المتكررة حول WebdriverIO MCP.
عام
ما هو MCP؟
MCP (بروتوكول سياق النموذج) هو بروتوكول مفتوح يمكّن المساعدين الذكاء الاصطناعي مثل Claude من التفاعل مع الأدوات والخدمات الخارجية. يقوم WebdriverIO MCP بتنفيذ هذا البروتوكول لتوفير إمكانيات أتمتة المتصفح والجوال لـ Claude Desktop و Claude Code.
ما الذي يمكنني أتمتته باستخدام WebdriverIO MCP؟
يمكنك أتمتة:
- متصفحات سطح المكتب (Chrome) - التصفح، النقر، الكتابة، لقطات الشاشة
- تطبيقات iOS - على المحاكيات أو الأجهزة الحقيقية
- تطبيقات Android - على المحاكيات أو الأجهزة الحقيقية
- التطبيقات الهجينة - التبديل بين السياقات الأصلية وسياقات الويب
هل أحتاج إلى كتابة التعليمات البرمجية؟
لا! هذه هي الميزة الرئيسية لـ MCP. يمكنك وصف ما تريد القيام به بلغة طبيعية، وسيستخدم Claude الأدوات المناسبة لإنجاز المهمة.
أمثلة على الأوامر:
- "افتح Chrome وانتقل إلى webdriver.io"
- "انقر على زر البدء"
- "التقط لقطة شاشة للصفحة الحالية"
- "ابدأ تطبيق iOS الخاص بي وقم بتسجيل الدخول كمستخدم اختبار"
التثبيت والإعداد
كيف أقوم بتثبيت WebdriverIO MCP؟
لست بحاجة إلى تثبيته بشكل منفصل. يعمل خادم MCP تلقائيًا عبر npx عند تكوينه في Claude Desktop أو Claude Code.
أضف هذا إلى تكوين Claude Desktop الخاص بك:
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}
أين يوجد ملف تكوين Claude Desktop؟
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
هل أحتاج إلى Appium لأتمتة المتصفح؟
لا. تتطلب أتمتة المتصفح تثبيت Chrome فقط. يتعامل WebdriverIO مع ChromeDriver تلقائيًا.
هل أحتاج إلى Appium لأتمتة الأجهزة المحمولة؟
نعم. تتطلب أتمتة الأجهزة المحمولة:
- تشغيل خادم Appium (
npm install -g appium && appium) - تثبيت برامج تشغيل المنصة (
appium driver install xcuitestلـ iOS،appium driver install uiautomator2لـ Android) - أدوات التطوير المناسبة (Xcode لـ iOS، Android SDK لـ Android)
أتمتة المتصفح
ما هي المتصفحات المدعومة؟
حاليًا، يتم دعم Chrome فقط. قد تتم إضافة دعم للمتصفحات الأخرى في الإصدارات المستقبلية.
هل يمكنني تشغيل Chrome في وضع بدون واجهة (headless)؟
نعم! اطلب من Claude بدء المتصفح في وضع بدون واجهة:
"ابدأ Chrome في وضع بدون واجهة"
أو سيستخدم Claude هذا الخيار عند الحاجة (مثلاً في سياقات CI/CD).
هل يمكنني تعيين حجم نافذة المتصفح؟
نعم. يم كنك تحديد الأبعاد عند بدء المتصفح:
"ابدأ Chrome بحجم نافذة 1920×1080"
الأبعاد المدعومة: 400-3840 بكسل عرضًا، 400-2160 بكسل ارتفاعًا. الافتراضي هو 1920×1080.
هل يمكنني بدء المتصفح والانتقال في خطوة واحدة؟
نعم! استخدم معلمة navigationUrl:
"ابدأ Chrome وانتقل إلى https://webdriver.io"
هذا أكثر كفاءة من بدء المتصفح ثم التصفح بشكل منفصل.
كيف يمكنني التقاط لقطات الشاشة؟
ما عليك سوى أن تطلب من Claude:
"التقط لقطة شاشة للصفحة الحالية"
يتم تحسين لقطات الشاشة تلقائيًا:
- تقييس الحجم إلى أقصى بعد 2000 بكسل
- ضغط إلى حجم ملف أقصى 1 ميجابايت
- التنسيق: PNG أو JPEG (يتم اختياره تلقائيًا للحصول على الجودة المثلى)
هل يمكنني التفاعل مع الإطارات المضمنة (iframes)؟
حاليًا، يعمل خادم MCP على المستند الرئيسي. قد تتم إضافة التفاعل مع الإطارات المضمنة في الإصدارات المستقبلية.
هل يمكنني تنفيذ JavaScript مخصص؟
نعم! استخدم أداة execute_script:
"نفذ برنامج نصي للحصول على عنوان الصفحة" "نفذ برنامج نصي: return document.querySelectorAll('button').length"
أتمتة الأجهزة المحمولة
كيف أبدأ تطبيق iOS؟
اسأل Claude مع التفاصيل الضرورية:
"ابدأ تطبيق iOS الخاص بي الموجود في /path/to/MyApp.app على محاكي iPhone 15"
أو للتطبيق المثبت:
"ابدأ التطبيق مع تمكين noReset على محاكي iPhone 15"
كيف أبدأ تطبيق Android؟
"ابدأ تطبيق Android الخاص بي في /path/to/app.apk على محاكي Pixel 7"
أو للتطبيق المثبت:
"ابدأ التطبيق مع تمكين noReset على محاكي Pixel 7"
هل يمكنني الاختبار على أجهزة حقيقية؟
نعم! للأجهزة الحقيقية، ستحتاج إلى UDID للجهاز:
- iOS: قم بتوصيل الجهاز، افتح Finder، انقر على الجهاز، انقر على الرقم التسلسلي لإظهار UDID
- Android: قم بتشغيل
adb devicesفي الطرفية
ثم اسأل Claude:
"ابدأ تطبيق iOS الخاص بي على الجهاز الحقيقي مع UDID abc123..."
كيف أتعامل مع مربعات حوار الأذونات؟
افتراضيًا، يتم منح الأذونات تلقائيًا (autoGrantPermissions: true). إذا كنت بحاجة إلى اختبار تدفقات الأذونات، يمكنك تعطيل هذا:
"ابدأ تطبيقي بدون منح الأذونات تلقائيًا"
ما هي الإيماءات المدعومة؟
- النقر: النقر على العناصر أو الإحداثيات
- السحب: السحب للأعلى، للأسفل، لليسار، أو لليمين
- السحب والإفلات: السحب من عنصر إلى آخر أو إلى إحداثيات
ملاحظة: الضغط الطويل متاح من خلال execute_script مع أوامر Appium للجوال.
كيف يمكنني التمرير في تطبيقات الجوال؟
استخدم إيماءات السحب:
"اسحب للأعلى للتمرير للأسفل" "اسحب للأسفل للتمرير للأعلى"
هل يمكنني تدوير الجهاز؟
نعم:
"قم بتدوير الجهاز إلى الوضع الأفقي" "قم بتدوير الجهاز إلى الوضع الرأسي"
كيف أتعامل مع التطبيقات الهجينة؟
للتطبيقات التي تحتوي على عرض ويب، يمكنك تبديل السياقات:
"احصل على السياقات المتاحة" "انتقل إلى سياق عرض الويب" "عد إلى السياق الأصلي"
هل يمكنني تنفيذ أوامر Appium للجوال؟
نعم! استخدم أداة execute_script:
Execute script "mobile: pressKey" with args [{ keycode: 4 }] // اضغط BACK على Android
Execute script "mobile: activateApp" with args [{ appId: "com.example.app" }]
Execute script "mobile: terminateApp" with args [{ bundleId: "com.example.app" }]
اختيار العناصر
كيف يعرف Claude أي عنصر للتفاعل معه؟
يستخدم Claude أداة get_visible_elements لتحديد العناصر التفاعلية على الصفحة/الشاشة. يأتي كل عنصر مع استراتيجيات محدد متعددة.
ماذا لو كان هناك الكثير من العناصر على الصفحة؟
استخدم التقسيم إلى صفحات لإدارة قوائم العناصر الكبيرة:
"احصل على أول 20 عنصرًا مرئيًا" "احصل على العناصر المرئية بإزاحة 20 وحد 20"
تتضمن الاستجابة total و showing و hasMore للمساعدة في التنقل عبر العناصر.
هل يمكنني الحصول على أنواع محددة من العناصر فقط؟
نعم! استخدم معلمة elementType:
interactable(افتراضي): الأزرار، الروابط، حقول الإدخالvisual: الصور، SVGall: كلا النوعين
"احصل على العناصر المرئية البصرية في الصفحة"
ماذا لو نقر Claude على العنصر الخطأ؟
يمكنك أن تكون أكثر تحديدًا:
- قدم النص بالضبط: "انقر على الزر الذي يقول 'إرسال الطلب'"
- قدم المحدد: "انقر على العنصر بمحدد #submit-btn"
- قدم معرف إمكانية الوصول: "انقر على العنصر بمعرف إمكانية الوصول loginButton"
ما هي أفضل استراتيجية محدد للجوال؟
- معرف إمكانية الوصول (الأفضل) -
~loginButton - معرف المورد (Android) -
id=login_button - سلسلة المسند (iOS) -
-ios predicate string:label == "Login" - XPath (الملاذ الأخير) - أبطأ ولكن يعمل في كل مكان
ما هي شجرة إمكانية الوصول ومتى يجب أن أستخدمها؟
توفر شجرة إمكانية الوصول معلومات دلالية حول عناصر الصفحة (الأدوار، الأسماء، الحالات). استخدم get_accessibility عندما:
- لا تُرجع
get_visible_elementsالعناصر المتوقعة - تحتاج إلى العثور على العناصر حسب دور إمكانية الوصول (زر، رابط، مربع نص، إلخ)
- تحتاج إلى معلومات دلالية مفصلة حول العناصر
"احصل على شجرة إمكانية الوصول مفلترة إلى أدوار الزر والرابط"