Конфігурація
В залежності від типу налаштування (наприклад, використання сирих прив'язок протоколу, WebdriverIO як окремого пакету або тестраннера WDIO) доступний різний набір опцій для керування середовищем.
Опції WebDriver
Наступні опції визначені при використанні пакету протоколу webdriver:
protocol
Протокол для комунікації з сервером драйвера.
Тип: String
За замовчуванням: http
hostname
Хост вашого сервера драйвера.
Тип: String
За замовчуванням: 0.0.0.0
port
Порт, на якому працює ваш сервер драйвера.
Тип: Number
За замовчуванням: undefined
path
Шлях до кінцевої точки сервера драйвера.
Тип: String
За замовчуванням: /
queryParams
Параметри запиту, які передаються на сервер драйвера.
Тип: Object
За замовчуванням: undefined
user
Ваше ім'я користувача хмарного сервісу (працює лише для облікових записів Sauce Labs, Browserstack, TestingBot або LambdaTest). Якщо встановлено, WebdriverIO автоматично налаштує параметри з'єднання для вас. Якщо ви не використовуєте хмарного провайдера, це можна використовувати для аутентифікації будь-якого іншого бекенду WebDriver.
Тип: String
За замовчуванням: undefined
key
Ваш ключ доступу до хмарного сервісу або секретний ключ (працює лише для облікових записів Sauce Labs, Browserstack, TestingBot або LambdaTest). Якщо встановлено, WebdriverIO автоматично налаштує параметри з'єднання для вас. Якщо ви не використовуєте хмарного провайдера, це можна використовувати для аутентифікації будь-якого іншого бекенду WebDriver.
Тип: String
За замовчуванням: undefined
capabilities
Визначає можливості, які ви хочете використовувати у ваші й сесії WebDriver. Перегляньте WebDriver Protocol для отримання детальної інформації. Якщо ви використовуєте старіший драйвер, який не підтримує протокол WebDriver, вам потрібно буде використовувати можливості JSONWireProtocol для успішного запуску сесії.
Окрім можливостей на основі WebDriver, ви можете застосовувати специфічні для браузера та постачальника опції, які дозволяють глибше налаштовувати віддалений браузер або пристрій. Вони документовані у відповідних документах постачальників, наприклад:
goog:chromeOptions: для Google Chromemoz:firefoxOptions: для Mozilla Firefoxms:edgeOptions: для Microsoft Edgesauce:options: для Sauce Labsbstack:options: для BrowserStackselenoid:options: для Selenoid
Крім того, корисним інструментом є Automated Test Configurator від Sauce Labs, який допоможе вам створити цей об'єкт, вибравши бажані можливості.
Тип: Object
За замовчуванням: null
Приклад:
{
browserName: 'chrome', // опції: `chrome`, `edge`, `firefox`, `safari`
browserVersion: '27.0', // версія браузера
platformName: 'Windows 10' // платформа ОС
}
Якщо ви запускаєте веб- або нативні тести на мобільних пристроях, capabilities відрізняється від протоколу WebDriver. Дивіться Appium Docs для отримання додаткової інформації.
logLevel
Рівень детальності логування.
Тип: String
За замовчуванням: info
Опції: trace | debug | info | warn | error | silent
outputDir
Директорія для зберігання всіх лог-файлів тестраннера (включаючи логи репортерів та логи wdio). Якщо не встановлено, всі логи транслюються в stdout. Оскільки більшість репортерів налаштовані для запису в stdout, рекомендується використовувати цю опцію лише для конкретних репортерів, де має більше сенсу виводити звіт у файл (наприклад, для репортера junit).
При роботі в автономному режимі, єдиним логом, який генерує WebdriverIO, буде лог wdio.
Тип: String
За замовчуванням: null
connectionRetryTimeout
Таймаут для будь-якого запиту WebDriver до драйвера або гріда.
Тип: Number
За замовчуванням: 120000
connectionRetryCount
Максимальна кількість повторних зап итів до сервера Selenium.
Тип: Number
За замовчуванням: 3
agent
Дозволяє використовувати власний агент http/https/http2 agent для виконання запитів.
Тип: Object
За замовчуванням:
{
http: new http.Agent({ keepAlive: true }),
https: new https.Agent({ keepAlive: true })
}
headers
Вказати власні headers для передачі в кожен запит WebDriver. Якщо ваш Selenium Grid вимагає Basic Authentication, ми рекомендуємо передати загол овок Authorization через цю опцію для аутентифікації ваших запитів WebDriver, наприклад:
import { Buffer } from 'buffer';
// Read the username and password from environment variables
const username = process.env.SELENIUM_GRID_USERNAME;
const password = process.env.SELENIUM_GRID_PASSWORD;
// Combine the username and password with a colon separator
const credentials = `${username}:${password}`;
// Encode the credentials using Base64
const encodedCredentials = Buffer.from(credentials).toString('base64');
export const config: WebdriverIO.Config = {
// ...
headers: {
Authorization: `Basic ${encodedCredentials}`
}
// ...
}
Тип: Object
За замовчуванням: {}
transformRequest
Функція перехоплення опцій HTTP-запиту перед виконанням запиту WebDriver
Тип: (RequestOptions) => RequestOptions
За замовчуванням: немає
transformResponse
Функція перехоплення об'єктів HTTP-відповіді після надходження відповіді WebDriver. Функції передається оригінальний об'єкт відповіді як перший параметр та відповідний RequestOptions як другий параметр.
Тип: (Response, RequestOptions) => Response
За замовчуванням: немає
strictSSL
Чи потрібно, щоб SSL-сертифікат був дійсним.
Може бути встановлено через змінні середовища як STRICT_SSL або strict_ssl.
Тип: Boolean
За замовч уванням: true
enableDirectConnect
Чи включити функцію прямого підключення Appium. Не робить нічого, якщо відповідь не мала потрібних ключів, коли прапорець увімкнено.
Тип: Boolean
За замовчуванням: true
cacheDir
Шлях до кореня каталогу кешу. Цей каталог використовується для зберігання всіх драйверів, які завантажуються при спробі запустити сесію.
Тип: String
За замовчуванням: process.env.WEBDRIVER_CACHE_DIR || os.tmpdir()
maskingPatterns
Для більш безпечного логування, регулярні вирази, встановлені за допомогою maskingPatterns, можуть приховувати конфіденційну інформацію з логу.
- Формат рядка — це регулярний вираз з прапорами або без них (наприклад,
/.../i) і розділений комами для кількох регулярних виразів. - Для отримання додаткової інформації про шаблони маскування, див. розділ Шаблони маскування в README WDIO Logger.
Тип: String
За замовчуванням: undefined
Приклад:
{
maskingPatterns: '/--key=([^ ]*)/i,/RESULT (.*)/'
}
WebdriverIO
Наступні опції (включаючи перераховані вище) можна використовувати з WebdriverIO в автономному режимі:
automationProtocol
Визначте протокол, який ви хочете використовувати для автоматизації браузера. В даний час підтримується лише webdriver, оскільки це основна технологія автоматизації браузера, яку використовує WebdriverIO.
Якщо ви хочете автоматизувати браузер за допомогою іншої технології автоматизації, переконайтеся, що ви встановили цю властивість на шлях, який веде до модуля, що відповідає такому інтерфейсу:
import type { Capabilities } from '@wdio/types';
import type { Client, AttachOptions } from 'webdriver';
export default class YourAutomationLibrary {
/**
* Start a automation session and return a WebdriverIO [monad](https://github.com/webdriverio/webdriverio/blob/940cd30939864bdbdacb2e94ee6e8ada9b1cc74c/packages/wdio-utils/src/monad.ts)
* with respective automation commands. See the [webdriver](https://www.npmjs.com/package/webdriver) package
* as a reference implementation
*
* @param {Capabilities.RemoteConfig} options WebdriverIO options
* @param {Function} hook that allows to modify the client before it gets released from the function
* @param {PropertyDescriptorMap} userPrototype allows user to add custom protocol commands
* @param {Function} customCommandWrapper allows to modify the command execution
* @returns a WebdriverIO compatible client instance
*/
static newSession(
options: Capabilities.RemoteConfig,
modifier?: (...args: any[]) => any,
userPrototype?: PropertyDescriptorMap,
customCommandWrapper?: (...args: any[]) => any
): Promise<Client>;
/**
* allows user to attach to existing sessions
* @optional
*/
static attachToSession(
options?: AttachOptions,
modifier?: (...args: any[]) => any, userPrototype?: {},
commandWrapper?: (...args: any[]) => any
): Client;
/**
* Changes The instance session id and browser capabilities for the new session
* directly into the passed in browser object
*
* @optional
* @param {object} instance the object we get from a new browser session.
* @returns {string} the new session id of the browser
*/
static reloadSession(
instance: Client,
newCapabilities?: WebdriverIO.Capabilitie
): Promise<string>;
}
Тип: String
За замовчуванням: webdriver
baseUrl
Скорочує виклики команд url шляхом встановлення базового URL.
- Якщо ваш параметр
urlпочинається з/, тоbaseUrlдодається спереду (за винятком шляхуbaseUrl, якщо він є). - Якщо ваш параметр
urlпочинається без схеми або/(наприклад,some/path), то повнийbaseUrlдодається безпосередньо спереду.
Тип: String
За замовчуванням: null
waitforTimeout
Стандартний таймаут для всіх команд waitFor*. (Зверніть увагу на маленьку літеру f у назві опції.) Цей таймаут лише впливає на команди, які починаються з waitFor*, та їхній стандартний час очікування.
Щоб збільшити таймаут для тесту, дивіться документацію фреймворку.
Тип: Number
За замовчуванням: 5000
waitforInterval
Стандартний інтервал для всіх команд waitFor* для перевірки, чи змінився очікуваний стан (наприклад, видимість).
Тип: Number
За замовчуванням: 100
region
Якщо ви працюєте на Sauce Labs, ви можете вибрати запуск тестів між різними центрами обробки даних: US або EU.
Щоб змінити регіон на EU, додайте region: 'eu' до ва шої конфігурації.
Примітка: Це має вплив лише якщо ви надали параметри user і key, які пов'язані з вашим обліковим записом Sauce Labs.
Тип: String
За замовчуванням: us
(тільки для віртуальних машин та/або емуляторів/симуляторів)
Опції Testrunner
Наступні опції (включаючи перераховані вище) визначені лише для запуску WebdriverIO з тестраннером WDIO:
specs
Визначте специфікації для виконання тестів. Ви можете вказати шаблон glob для відповідності декільком файлам одночасно або обгорнути glob або набір шляхів у масив, щоб запустити їх в одному робочому процесі. Усі шляхи розглядаються як відносні від шляху до файлу конфігурації.
Тип: (String | String[])[]
За замовчуванням: []
exclude
Ви ключити специфікації з виконання тестів. Усі шляхи розглядаються як відносні від шляху до файлу конфігурації.
Тип: String[]
За замовчуванням: []
suites
Об'єкт, що описує різні набори тестів, які ви потім можете вказати за допомогою опції --suite в інтерфейсі командного рядка wdio.
Тип: Object
За замовчуванням: {}
capabilities
Те саме, що і розділ capabilities, описаний вище, за винятком можливості вказати об'єкт multiremote або кілька сесій WebDriver в масиві для паралельного виконання.
Ви можете застосувати ті самі специфічні для постачальника та браузера можливості, як визначено вище.
Тип: Object|Object[]
За замовчуванням: [{ 'wdio:maxInstances': 5, browserName: 'firefox' }]