القدرات
القدرة هي تعريف لواجهة عن بعد. تساعد WebdriverIO على فهم البيئة التي ترغب في تشغيل اختباراتك عليها، سواء كانت متصفح أو بيئة جوال. تعتبر القدرات أقل أهمية عند تطوير الاختبارات محليًا لأنك غالبًا ما تقوم بتشغيلها على واجهة عن بعد واحدة معظم الوقت، ولكنها تصبح أكثر أهمية عند تشغيل مجموعة كبيرة من اختبارات التكامل في CI/CD.
تم تعريف تنسيق كائن القدرة بشكل جيد من قبل مواصفات WebDriver. سيفشل مشغل اختبار WebdriverIO مبكرًا إذا لم تلتزم القدرات المحددة من قبل المستخدم بتلك المواصفات.
القدرات المخصصة
في حين أن عدد القدرات المحددة بشكل ثابت منخفض جدًا، يمكن للجميع توفير وقبول قدرات مخصصة خاصة بمشغل الأتمتة أو ال واجهة عن بعد:
امتدادات القدرات الخاصة بالمتصفح
goog:chromeOptions
: امتدادات Chromedriver، قابلة للتطبيق فقط للاختبار في Chromemoz:firefoxOptions
: امتدادات Geckodriver، قابلة للتطبيق فقط للاختبار في Firefoxms:edgeOptions
: EdgeOptions لتحديد البيئة عند استخدام EdgeDriver لاختبار Chromium Edge
امتدادات القدرات لمزودي الخدمات السحابية
sauce:options
: Sauce Labsbstack:options
: BrowserStacktb:options
: TestingBot- والعديد من الخيارات الأخرى...
امتدادات القدرات لمحركات الأتمتة
قدرات 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', // أو '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', // أو 'chromium'
browserVersion: '116' // أو '116.0.5845.96'، 'stable'، 'dev'، 'canary'، 'beta' أو 'latest' (نفس 'canary')
}
إذا كنت ترغب في اختبار متصفح تم تنزيله يدويًا، يمكنك توفير مسار ثنائي للمتصفح عبر:
{
browserName: 'chrome', // أو 'chromium'
'goog:chromeOptions': {
binary: '/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary'
}
}
بالإضافة إلى ذلك، إذا كنت ترغب في استخدام مشغل تم تنزيله يدويًا، يمكنك توفير مسار ثنائي للمشغل عبر:
{
browserName: 'chrome', // أو 'chromium'
'wdio:chromedriverOptions': {
binary: '/path/to/chromdriver'
}
}
عند الاختبار على Firefox، ستقوم WebdriverIO تلقائيًا بتنزيل إصدار المتصفح والمشغل المطلوبين لك بناءً على browserVersion
المحدد، على سبيل المثال:
{
browserName: 'firefox',
browserVersion: '119.0a1' // أو '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' // أو '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'
}
توسيع القدرات المخصصة
إذا كنت ترغب في تعريف مجموعتك الخاصة من القدرات من أجل تخزين بيانات عشوائية لاستخدامها داخل الاختبارات لتلك القدرة المحددة، يمكنك القيام بذلك عن طريق تعيين:
export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// التكوينات المخصصة
}
}]
}
يُنصح باتباع بروتوكول W3C عندما يتعلق الأمر بتسمية القدرة التي تتطلب حرف :
(نقطتين)، والذي يشير إلى مساحة اسم خاصة بالتنفيذ. داخل اختباراتك، يمكنك الوصول إلى قدرتك المخصصة من خلال:
browser.capabilities['custom:caps']
لضمان سلامة النوع، يمكنك توسيع واجهة قدرة WebdriverIO عبر:
declare global {
namespace WebdriverIO {
interface Capabilities {
'custom:caps': {
// ...
}
}
}
}