Модули
WebdriverIO публикует различные модули в NPM и других реестрах, которые вы можете использовать для создания собственного фреймворка автоматизации. Подробнее о типах настройки WebdriverIO здесь.
webdriver
и devtools
Пакеты протоколов (webdriver
и devtools
) предоставляют класс со следующими статическими функциями, которые позволяют инициировать сессии:
newSession(options, modifier, userPrototype, customCommandWrapper)
Начинает новую сессию с определенными возможностями. На основе ответа сессии будут предоставлены команды из разных протоколов.
Параметры
options
: Опции WebDrivermodifier
: функция, которая позволяет изменять экземпляр клиента перед его возвратомuserPrototype
: объект свойств, который позволяет расширить прототип экземпляраcustomCommandWrapper
: функция, которая позволяет обернуть функциональность вокруг вызовов функций
Возвращает
- Объект Browser
Пример
const client = await WebDriver.newSession({
capabilities: { browserName: 'chrome' }
})
attachToSession(attachInstance, modifier, userPrototype, customCommandWrapper)
Присоединяется к запущенной сессии WebDriver или DevTools.
Параметры
attachInstance
: экземпляр, к которому нужн о присоединиться, или как минимум объект со свойствомsessionId
(например,{ sessionId: 'xxx' }
)modifier
: функция, которая позволяет изменять экземпляр клиента перед его возвратомuserPrototype
: объект свойств, который позволяет расширить прототип экземпляраcustomCommandWrapper
: функция, которая позволяет обернуть функциональность вокруг вызовов функций
Возвращает
- Объект Browser
Пример
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
: Опции WebdriverIOmodifier
: функция, которая позволяет изменять экземпляр клиента перед его возвратом
Возвращает
- Объект Browser
Пример
import { remote } from 'webdriverio'
const browser = await remote({
capabilities: { browserName: 'chrome' }
})
attach(attachOptions)
Присоединяется к запущенной сессии WebdriverIO.
Параметры
attachOptions
: экземпляр, к которому нужно присоединиться, или как минимум объект со свойствомsessionId
(например,{ sessionId: 'xxx' }
)
Возвращает
- Объект Browser
Пример
import { remote, attach } from 'webdriverio'
const browser = await remote({...})
const newBrowser = await attach(browser)
multiremote(multiremoteOptions)
Инициирует экземпляр multiremote, который позволяет вам управлять несколькими сессиями в рамках одного экземпляра. Ознакомьтесь с нашими примерами multiremote для конкретных вариантов использования.
Параметры
multiremoteOptions
: объект с ключами, представляющими имя браузера и их Опции WebdriverIO.
Возвращает
- Объект Browser
Пример
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
как модуль, вот так:
- EcmaScript Modules
- CommonJS
import Launcher from '@wdio/cli'
const Launcher = require('@wdio/cli').default
После этого создайте экземпляр 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'
Доступны следующие именованные экспорты: