القدرات
القدرة هي تعريف لواجهة التحكم عن بعد. وهي تساعد WebdriverIO على فهم البيئة المتصفحية أو المحمولة التي ترغب في تشغيل اختباراتك عليها. تعتبر القدرات أقل أهمية عند تطوير الاختبارات محليًا لأنك تقوم بتشغيلها على واجهة تحكم واحدة في معظم الأوقات، لكنها تصبح أكثر أهمية عند تشغيل مجموعة كبيرة من اختبارات التكامل في CI/CD.
تم تحديد تنسيق كائن القدرة بشكل جيد بواسطة مواصفات WebDriver. سيفشل testrunner الخاص بـ WebdriverIO مبكرًا إذا لم تلتزم القدرات التي يحددها المستخدم بهذه المواصفات.
القدرات المخصصة
بينما يكون عدد القدرات المحددة الثابتة منخفضًا جدًا، يمكن للجميع توفير وقبول قدرات مخصصة خاصة بسائق الأتمتة أو واج هة التحكم عن بعد:
امتدادات القدرات الخاصة بالمتصفح
goog:chromeOptions: امتدادات Chromedriver، قابلة للتطبيق فقط للاختبار في Chromemoz:firefoxOptions: امتدادات Geckodriver، قابلة للتطبيق فقط للاختبار في Firefoxms:edgeOptions: EdgeOptions لتحديد البيئة عند استخدام EdgeDriver لاختبار Chromium Edge
امتدادات قدرات مزودي الخدمات السحابية
sauce:options: Sauce Labsbstack:options: BrowserStacktb:options: TestingBotLT:Options: LambdaTest- والعديد غيرها...
امتدادات قدرات محرك الأتمتة
قدرات 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
- wdio:chromedriverOptions
- wdio:geckodriverOptions
- wdio:edgedriverOptions
- 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
راجع جميع خيارات Geckodriver في حزمة برنامج التشغيل الرسمية.
راجع جميع خيارات Edgedriver في حزمة برنامج التشغيل الرسمية.
راجع جميع خيارات Safaridriver في حزمة برنامج التشغيل الرسمية.
القدرات الخاصة لحالات الاستخدام المحددة
هذه قائمة بالأمثلة التي توضح القدرات التي يجب تطبيقها لتحقيق حالة استخدام معينة.
تشغيل المتصفح بدون واجهة رسومية
تشغيل متصفح بدون واجهة رسومية يعني تشغيل نسخة من المتصفح بدون نافذة أو واجهة مستخدم. يتم استخدام هذا غالبًا في بيئات CI/CD حيث لا يتم استخدام شاشة عرض. لتشغيل متصفح في وضع بدون واجهة رسومية، قم بتطبيق القدرات التالية:
- Chrome
- Firefox
- Microsoft Edge
- Safari
{
browserName: 'chrome', // or 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}
browserName: 'firefox',
'moz:firefoxOptions': {
args: ['-headless']
}
browserName: 'msedge',
'ms:edgeOptions': {
args: ['--headless']
}
يبدو أن Safari لا يدعم التشغيل في وضع بدون واجهة رسومية.
أتمتة قنوات المتصفح المختلفة
إذا كنت ترغب في اختبار إصدار متصفح لم يتم إصداره بعد كإصدار مستقر، مثل Chrome Canary، يمكنك القيام بذلك عن طريق تعيين القدرات والإشارة إلى المتصفح الذي ترغب في بدء تشغيله، على سبيل المثال:
- Chrome
- Firefox
- Microsoft Edge
- Safari
عند الاختبار على 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'
}
}
عند الاختبار على Firefox، سيقوم WebdriverIO تلقائيًا بتنزيل إصدار المتصفح وبرنامج التشغيل المطلوبين لك بناءً على browserVersion المحدد، على سبيل المثال:
{
browserName: 'firefox',
browserVersion: '119.0a1' // or 'latest'
}
إذا كنت ترغب في اختبار إصدار تم تنزيله يدويًا، يمكنك توفير مسار ثنائي للمتصفح عبر:
{
browserName: 'firefox',
'moz:firefoxOptions': {
binary: '/Applications/Firefox\ Nightly.app/Contents/MacOS/firefox'
}
}
بالإضافة إلى ذلك، إذا كنت ترغب في استخدام برنامج تشغيل تم تنزيله يدويًا، يمكنك توفير مسار ثنائي لبرنامج التشغيل عبر:
{
browserName: 'firefox',
'wdio:geckodriverOptions': {
binary: '/path/to/geckodriver'
}
}
عند الاختبار على Microsoft Edge، تأكد من تثبيت إصدار المتصفح المطلوب على جهازك. يمكنك توجيه WebdriverIO إلى المتصفح لتنفيذه عبر:
{
browserName: 'msedge',
'ms:edgeOptions': {
binary: '/Applications/Microsoft\ Edge\ Canary.app/Contents/MacOS/Microsoft\ Edge\ Canary'
}
}
سيقوم WebdriverIO تلقائيًا بتنزيل إصدار برنامج التشغيل المطلوب لك بناءً على browserVersion المحدد، على سبيل المثال:
{
browserName: 'msedge',
browserVersion: '109' // or '109.0.1467.0', 'stable', 'dev', 'canary', 'beta'
}
بالإضافة إلى ذلك، إذا كنت ترغب في استخدام برنامج تشغيل تم تنزيله يدويًا، يمكنك توفير مسار ثنائي لبرنامج التشغيل عبر:
{
browserName: 'msedge',
'wdio:edgedriverOptions': {
binary: '/path/to/msedgedriver'
}
}
عند الاختبار على Safari، تأكد من تثبيت Safari Technology Preview على جهازك. يمكنك توجيه WebdriverIO إلى هذا الإصدار عبر:
{
browserName: 'safari technology preview'
}