تخطى إلى المحتوى الرئيسي

القدرات

القدرة هي تعريف لواجهة التحكم عن بعد. وهي تساعد WebdriverIO على فهم البيئة المتصفحية أو المحمولة التي ترغب في تشغيل اختباراتك عليها. تعتبر القدرات أقل أهمية عند تطوير الاختبارات محليًا لأنك تقوم بتشغيلها على واجهة تحكم واحدة في معظم الأوقات، لكنها تصبح أكثر أهمية عند تشغيل مجموعة كبيرة من اختبارات التكامل في CI/CD.

معلومات

تم تحديد تنسيق كائن القدرة بشكل جيد بواسطة مواصفات WebDriver. سيفشل testrunner الخاص بـ WebdriverIO مبكرًا إذا لم تلتزم القدرات التي يحددها المستخدم بهذه المواصفات.

القدرات المخصصة

بينما يكون عدد القدرات المحددة الثابتة منخفضًا جدًا، يمكن للجميع توفير وقبول قدرات مخصصة خاصة بسائق الأتمتة أو واجهة التحكم عن بعد:

امتدادات القدرات الخاصة بالمتصفح

  • goog:chromeOptions: امتدادات Chromedriver، قابلة للتطبيق فقط للاختبار في Chrome
  • moz:firefoxOptions: امتدادات Geckodriver، قابلة للتطبيق فقط للاختبار في Firefox
  • ms:edgeOptions: EdgeOptions لتحديد البيئة عند استخدام EdgeDriver لاختبار Chromium Edge

امتدادات قدرات مزودي الخدمات السحابية

امتدادات قدرات محرك الأتمتة

  • appium:xxx: Appium
  • selenoid:xxx: Selenoid
  • والعديد غيرها...

قدرات WebdriverIO لإدارة خيارات سائق المتصفح

يدير WebdriverIO تثبيت وتشغيل سائق المتصفح نيابة عنك. يستخدم WebdriverIO قدرة مخصصة تسمح لك بتمرير معلمات إلى السائق.

wdio:chromedriverOptions

خيارات محددة تمرر إلى Chromedriver عند بدء تشغيله.

wdio:geckodriverOptions

خيارات محددة تمرر إلى Geckodriver عند بدء تشغيله.

wdio:edgedriverOptions

خيارات محددة تمرر إلى Edgedriver عند بدء تشغيله.

wdio:safaridriverOptions

خيارات محددة تمرر إلى Safari عند بدء تشغيله.

wdio:maxInstances

الحد الأقصى لعدد العمليات المتوازية الإجمالية للمتصفح/القدرة المحددة. يأخذ الأسبقية على maxInstances و maxInstancesPerCapability.

النوع: number

wdio:specs

تحديد المواصفات لتنفيذ الاختبار لذلك المتصفح/القدرة. مثل خيار التكوين العادي specs، ولكن خاص بالمتصفح/القدرة. يأخذ الأسبقية على specs.

النوع: (String | String[])[]

wdio:exclude

استبعاد المواصفات من تنفيذ الاختبار لذلك المتصفح/القدرة. مثل خيار التكوين العادي exclude، ولكن خاص بالمتصفح/القدرة. يتم الاستبعاد بعد تطبيق خيار التكوين العام exclude.

النوع: String[]

wdio:enforceWebDriverClassic

افتراضيًا، يحاول WebdriverIO إنشاء جلسة WebDriver Bidi. إذا كنت لا تفضل ذلك، يمكنك تعيين هذه العلامة لتعطيل هذا السلوك.

النوع: boolean

خيارات السائق الشائعة

بينما تقدم جميع برامج التشغيل معلمات مختلفة للتكوين، هناك بعض الخيارات المشتركة التي يفهمها WebdriverIO ويستخدمها لإعداد برنامج التشغيل أو المتصفح الخاص بك:

cacheDir

المسار إلى جذر دليل التخزين المؤقت. يستخدم هذا الدليل لتخزين جميع برامج التشغيل التي يتم تنزيلها عند محاولة بدء جلسة.

النوع: string
الافتراضي: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()

binary

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

يمكنك توفير هذا المسار عبر متغيرات البيئة CHROMEDRIVER_PATH أو GECKODRIVER_PATH أو EDGEDRIVER_PATH.

النوع: string

تنبيه

إذا تم تعيين binary لبرنامج التشغيل، فلن يحاول WebdriverIO تنزيل برنامج تشغيل ولكنه سيستخدم البرنامج الذي يوفره هذا المسار. تأكد من أن برنامج التشغيل متوافق مع المتصفح الذي تستخدمه.

خيارات برنامج التشغيل الخاصة بالمتصفح

لنشر الخيارات إلى برنامج التشغيل، يمكنك استخدام القدرات المخصصة التالية:

  • Chrome أو Chromium: wdio:chromedriverOptions
  • Firefox: wdio:geckodriverOptions
  • Microsoft Edge: wdio:edgedriverOptions
  • Safari: wdio:safaridriverOptions
adbPort

المنفذ الذي يجب أن يعمل عليه برنامج تشغيل ADB.

مثال: 9515

النوع: number

urlBase

بادئة مسار URL الأساسي للأوامر، مثل wd/url.

مثال: /

النوع: string

logPath

كتابة سجل الخادم إلى ملف بدلاً من stderr، يزيد من مستوى السجل إلى INFO

النوع: string

logLevel

تعيين مستوى السجل. الخيارات الممكنة هي ALL وDEBUG وINFO وWARNING وSEVERE وOFF.

النوع: string

verbose

تسجيل مطول (مكافئ لـ --log-level=ALL)

النوع: boolean

silent

عدم تسجيل أي شيء (مكافئ لـ --log-level=OFF)

النوع: boolean

appendLog

إضافة ملف السجل بدلاً من إعادة كتابته.

النوع: boolean

replayable

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

النوع: boolean

readableTimestamp

إضافة طوابع زمنية قابلة للقراءة إلى السجل.

النوع: boolean

enableChromeLogs

عرض السجلات من المتصفح (يلغي خيارات التسجيل الأخرى).

النوع: boolean

bidiMapperPath

مسار مخصص لخريطة bidi.

النوع: string

allowedIps

قائمة مسموح بها مفصولة بفواصل من عناوين IP البعيدة التي يُسمح لها بالاتصال بـ EdgeDriver.

النوع: string[]
الافتراضي: ['']

allowedOrigins

قائمة مسموح بها مفصولة بفواصل من أصول الطلب التي يُسمح لها بالاتصال بـ EdgeDriver. استخدام * للسماح بأي أصل مضيف أمر خطير!

النوع: string[]
الافتراضي: ['*']

spawnOpts

الخيارات التي سيتم تمريرها إلى عملية برنامج التشغيل.

النوع: SpawnOptionsWithoutStdio | SpawnOptionsWithStdioTuple<StdioOption, StdioOption, StdioOption>
الافتراضي: undefined

القدرات الخاصة لحالات الاستخدام المحددة

هذه قائمة بالأمثلة التي توضح القدرات التي يجب تطبيقها لتحقيق حالة استخدام معينة.

تشغيل المتصفح بدون واجهة رسومية

تشغيل متصفح بدون واجهة رسومية يعني تشغيل نسخة من المتصفح بدون نافذة أو واجهة مستخدم. يتم استخدام هذا غالبًا في بيئات CI/CD حيث لا يتم استخدام شاشة عرض. لتشغيل متصفح في وضع بدون واجهة رسومية، قم بتطبيق القدرات التالية:

{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

أتمتة قنوات المتصفح المختلفة

إذا كنت ترغب في اختبار إصدار متصفح لم يتم إصداره بعد كإصدار مستقر، مثل Chrome Canary، يمكنك القيام بذلك عن طريق تعيين القدرات والإشارة إلى المتصفح الذي ترغب في بدء تشغيله، على سبيل المثال:

عند الاختبار على Chrome، سيقوم WebdriverIO تلقائيًا بتنزيل إصدار المتصفح وبرنامج التشغيل المطلوبين لك بناءً على browserVersion المحدد، على سبيل المثال:

{
browserName: 'chrome', // or 'chromium'
browserVersion: '116' // or '116.0.5845.96', 'stable', 'dev', 'canary', 'beta' or 'latest' (same as 'canary')
}

إذا كنت ترغب في اختبار متصفح تم تنزيله يدويًا، يمكنك توفير مسار ثنائي للمتصفح عبر:

{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}

بالإضافة إلى ذلك، إذا كنت ترغب في استخدام برنامج تشغيل تم تنزيله يدويًا، يمكنك توفير مسار ثنائي لبرنامج التشغيل عبر:

{
browserName: 'chrome', // or 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}

توسيع القدرات المخصصة

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

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// custom configurations
}
}]
}

يُنصح باتباع بروتوكول W3C عندما يتعلق الأمر بتسمية القدرات، والذي يتطلب حرف : (نقطتين)، مشيرًا إلى مساحة اسم خاصة بالتنفيذ. ضمن اختباراتك يمكنك الوصول إلى القدرة المخصصة الخاصة بك من خلال:

browser.capabilities['custom:caps']

لضمان سلامة النوع، يمكنك توسيع واجهة قدرة WebdriverIO عبر:

declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}

Welcome! How can I help?

WebdriverIO AI Copilot