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

Можливості

Можливість (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

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

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

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

Запуск браузера в безголовому режимі означає запуск екземпляра браузера без вікна або інтерфейсу користувача. Це переважно використовується в середовищах 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