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

Можливості

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

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

{
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