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

Модули

WebdriverIO публикует различные модули в NPM и других реестрах, которые вы можете использовать для создания собственного фреймворка автоматизации. Подробнее о типах настройки WebdriverIO здесь.

webdriver и devtools

Пакеты протоколов (webdriver и devtools) предоставляют класс со следующими статическими функциями, которые позволяют инициировать сессии:

newSession(options, modifier, userPrototype, customCommandWrapper)

Начинает новую сессию с определенными возможностями. На основе ответа сессии будут предоставлены команды из разных протоколов.

Параметры
  • options: Опции WebDriver
  • modifier: функция, которая позволяет изменять экземпляр клиента перед его возвратом
  • userPrototype: объект свойств, который позволяет расширить прототип экземпляра
  • customCommandWrapper: функция, которая позволяет обернуть функциональность вокруг вызовов функций
Возвращает
Пример
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})

attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)

Присоединяется к запущенной сессии WebDriver или DevTools.

Параметры
  • attachInstance: экземпляр, к которому нужно присоединиться, или как минимум объект со свойством sessionId (например, { sessionId: 'xxx' })
  • modifier: функция, которая позволяет изменять экземпляр клиента перед его возвратом
  • userPrototype: объект свойств, который позволяет расширить прототип экземпляра
  • customCommandWrapper: функция, которая позволяет обернуть функциональность вокруг вызовов функций
Возвращает
Пример
const client = await WebDriver.newSession({...})
const clonedClient = await WebDriver.attachToSession(client)

reloadSession(instance)

Перезагружает сессию для предоставленного экземпляра.

Параметры
  • instance: экземпляр пакета для перезагрузки
Пример
const client = await WebDriver.newSession({...})
await WebDriver.reloadSession(client)

webdriverio

Аналогично пакетам протоколов (webdriver и devtools), вы также можете использовать API пакета WebdriverIO для управления сессиями. API можно импортировать с помощью import { remote, attach, multiremote } from 'webdriverio' и они содержат следующую функциональность:

remote(options, modifier)

Запускает сессию WebdriverIO. Экземпляр содержит все команды, как и пакет протокола, но с дополнительными функциями высшего порядка, см. API документацию.

Параметры
  • options: Опции WebdriverIO
  • modifier: функция, которая позволяет изменять экземпляр клиента перед его возвратом
Возвращает
Пример
import { remote } from 'webdriverio'

const browser = await remote({
capabilities: { browserName: 'chrome' }
})

attach(attachOptions)

Присоединяется к запущенной сессии WebdriverIO.

Параметры
  • attachOptions: экземпляр, к которому нужно присоединиться, или как минимум объект со свойством sessionId (например, { sessionId: 'xxx' })
Возвращает
Пример
import { remote, attach } from 'webdriverio'

const browser = await remote({...})
const newBrowser = await attach(browser)

multiremote(multiremoteOptions)

Инициирует экземпляр multiremote, который позволяет вам управлять несколькими сессиями в рамках одного экземпляра. Ознакомьтесь с нашими примерами multiremote для конкретных вариантов использования.

Параметры
  • multiremoteOptions: объект с ключами, представляющими имя браузера и их Опции WebdriverIO.
Возвращает
Пример
import { multiremote } from 'webdriverio'

const matrix = await multiremote({
myChromeBrowser: {
capabilities: { browserName: 'chrome' }
},
myFirefoxBrowser: {
capabilities: { browserName: 'firefox' }
}
})
await matrix.url('http://json.org')
await matrix.getInstance('browserA').url('https://google.com')

console.log(await matrix.getTitle())
// returns ['Google', 'JSON']

@wdio/cli

Вместо вызова команды wdio, вы также можете включить тест-раннер как модуль и запустить его в произвольной среде. Для этого вам нужно подключить пакет @wdio/cli как модуль, вот так:

import Launcher from '@wdio/cli'

После этого создайте экземпляр launcher и запустите тест.

Launcher(configPath, opts)

Конструктор класса Launcher ожидает URL-адрес конфигурационного файла и объект opts с настройками, которые перезапишут настройки в конфигурации.

Параметры
  • configPath: путь к файлу wdio.conf.js для запуска
  • opts: аргументы (<RunCommandArguments>) для перезаписи значений из конфигурационного файла
Пример
const wdio = new Launcher(
'/path/to/my/wdio.conf.js',
{ spec: '/path/to/a/single/spec.e2e.js' }
)

wdio.run().then((exitCode) => {
process.exit(exitCode)
}, (error) => {
console.error('Launcher failed to start the test', error.stacktrace)
process.exit(1)
})

Команда run возвращает Promise. Он разрешается, если тесты запустились успешно или с ошибками, и отклоняется, если launcher не смог запустить тесты.

@wdio/browser-runner

При запуске модульных или компонентных тестов с использованием browser runner WebdriverIO, вы можете импортировать утилиты для моков в ваших тестах, например:

import { fn, spyOn, mock, unmock } from '@wdio/browser-runner'

Доступны следующие именованные экспорты:

fn

Мок-функция, подробнее в официальной документации Vitest.

spyOn

Функция шпиона, подробнее в официальной документации Vitest.

mock

Метод для создания мока файла или модуля зависимости.

Параметры
  • moduleName: либо относительный путь к файлу, который нужно замокать, либо имя модуля.
  • factory: функция для возврата замоканного значения (опционально)
Пример
mock('../src/constants.ts', () => ({
SOME_DEFAULT: 'mocked out'
}))

mock('lodash', (origModuleFactory) => {
const origModule = await origModuleFactory()
return {
...origModule,
pick: fn()
}
})

unmock

Отменяет мок зависимости, определенной в директории ручных моков (__mocks__).

Параметры
  • moduleName: имя модуля, мок которого нужно отменить.
Пример
unmock('lodash')

Welcome! How can I help?

WebdriverIO AI Copilot