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

Возможности

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

Путь к пользовательскому двунаправленному маппингу.

Тип: 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