پرش به محتوای اصلی

قابلیت‌ها

قابلیت، تعریفی برای یک رابط راه دور است. این به 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