Перейти к основному содержанию

Возможности

Capability (возможность) — это определение для удаленного интерфейса. Это помогает WebdriverIO понять, в какой браузерной или мобильной среде вы хотите запускать свои тесты. Capabilities менее критичны при локальной разработке тестов, так как чаще всего вы запускаете их на одном удаленном интерфейсе, но становятся более важными при запуске большого набора интеграционных тестов в CI/CD.

информация

Формат объекта capability хорошо определен спецификацией WebDriver. Тестовый раннер WebdriverIO выдаст ошибку, если определенные пользователем capabilities не соответствуют этой спецификации.

Пользовательские Capabilities

Хотя количество фиксированных определенных capabilities очень мало, каждый может предоставлять и принимать пользовательские capabilities, которые специфичны для драйвера автоматизации или удаленного интерфейса:

Расширения Capability для конкретных браузеров

  • goog:chromeOptions: расширения Chromedriver, применимые только для тестирования в Chrome
  • moz:firefoxOptions: расширения Geckodriver, применимые только для тестирования в Firefox
  • ms:edgeOptions: EdgeOptions для указания среды при использовании EdgeDriver для тестирования Chromium Edge

Расширения Capability от облачных провайдеров

Расширения Capability для движков автоматизации

  • appium:xxx: Appium
  • selenoid:xxx: Selenoid
  • и многие другие...

Capabilities WebdriverIO для управления опциями браузерных драйверов

WebdriverIO управляет установкой и запуском браузерного драйвера за вас. WebdriverIO использует пользовательский capability, который позволяет передавать параметры в драйвер.

wdio:chromedriverOptions

Специальные опции, передаваемые в Chromedriver при его запуске.

wdio:geckodriverOptions

Специальные опции, передаваемые в Geckodriver при его запуске.

wdio:edgedriverOptions

Специальные опции, передаваемые в Edgedriver при его запуске.

wdio:safaridriverOptions

Специальные опции, передаваемые в Safari при его запуске.

wdio:maxInstances

Максимальное количество параллельно работающих воркеров для конкретного браузера/capability. Имеет приоритет над maxInstances и maxInstancesPerCapability.

Тип: number

wdio:specs

Определяет спецификации для выполнения тестов для этого браузера/capability. То же, что и обычная опция конфигурации specs, но специфичная для браузера/capability. Имеет приоритет над specs.

Тип: (String | String[])[]

wdio:exclude

Исключает спецификации из выполнения тестов для этого браузера/capability. То же, что и обычная опция конфигурации exclude, но специфичная для браузера/capability. Исключения применяются после глобальной опции конфигурации 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 не будет пытаться скачать драйвер, а будет использовать тот, который предоставлен этим путем. Убедитесь, что драйвер совместим с используемым браузером.

Опции драйвера для конкретных браузеров

Чтобы передать опции драйверу, вы можете использовать следующие пользовательские capabilities:

  • 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

Специальные Capabilities для особых случаев использования

Это список примеров, показывающих, какие capabilities нужно применять для достижения определенного случая использования.

Запуск браузера в режиме Headless

Запуск браузера в режиме headless означает запуск экземпляра браузера без окна или пользовательского интерфейса. Это в основном используется в средах CI/CD, где не используется дисплей. Чтобы запустить браузер в режиме headless, примените следующие capabilities:

{
browserName: 'chrome', // или 'chromium'
'goog:chromeOptions': {
args: ['headless', 'disable-gpu']
}
}

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

Если вы хотите тестировать версию браузера, которая еще не выпущена как стабильная, например, Chrome Canary, вы можете сделать это, установив capabilities и указав браузер, который вы хотите запустить, например:

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

Расширение пользовательских Capabilities

Если вы хотите определить свой собственный набор capabilities, например, для хранения произвольных данных, которые будут использоваться в тестах для этого конкретного capability, вы можете сделать это, например, установив:

export const config = {
// ...
capabilities: [{
browserName: 'chrome',
'custom:caps': {
// пользовательские конфигурации
}
}]
}

Рекомендуется следовать протоколу W3C при именовании capabilities, что требует символа : (двоеточие), обозначающего пространство имен, специфичное для реализации. В своих тестах вы можете получить доступ к вашему пользовательскому capability через, например:

browser.capabilities['custom:caps']

Чтобы обеспечить безопасность типов, вы можете расширить интерфейс capability WebdriverIO:

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

Welcome! How can I help?

WebdriverIO AI Copilot