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

Возможности

Возможность (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