Thanks to visit codestin.com
Credit goes to webdriver.io

Перейти до основного вмісту

Можливості

Можливість (capability) - це визначення для віддаленого інтерфейсу. Це допомагає 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

Спеціальні можливості для конкретних випадків використання

Це список прикладів, що показують, які можливості потрібно застосувати для досягнення певного випадку використання.

Запуск браузера в безголовому режимі

Запуск браузера в безголовому режимі означає запуск екземпляру браузера без вікна чи UI. Це здебільшого використовується в середовищах CI/CD, де не використовується дисплей. Щоб запустити браузер у безголовому режимі, застосуйте наступні можливості:

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

Автоматизація різних каналів браузерів

Якщо ви хочете тестувати версію браузера, яка ще не випущена як стабільна, наприклад, Chrome Canary, ви можете зробити це, встановивши можливості та вказавши на браузер, який ви хочете запустити, наприклад:

При тестуванні на 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'
}
}

Розширення користувацьких можливостей

Якщо ви хочете визначити власний набір можливостей, наприклад, для зберігання довільних даних для використання в тестах для цієї конкретної можливості, ви можете зробити це, наприклад, встановивши:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// користувацькі налаштування
}
}]
}

Рекомендується слідувати протоколу W3C при іменуванні можливостей, що вимагає символу : (двокрапка), який позначає простір імен, специфічний для реалізації. У ваших тестах ви можете отримати доступ до своєї спеціальної можливості через, наприклад:

browser.capabilities['custom:caps']

Для забезпечення типової безпеки ви можете розширити інтерфейс можливостей WebdriverIO через:

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

Welcome! How can I help?

WebdriverIO AI Copilot