انتقل إلى المحتوى الرئيسي

القدرات

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

معلومات

تم تحديد تنسيق كائن القدرة بشكل جيد في مواصفات WebDriver. سيفشل مشغل اختبار 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

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

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

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

تشغيل متصفح بدون واجهة رسومية يعني تشغيل نسخة من المتصفح بدون نافذة أو واجهة مستخدم. يستخدم هذا في الغالب في بيئات 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