Об'єкт Browser
Розширює: EventEmitter
Об'єкт browser — це екземпляр сесії, який ви використовуєте для керування браузером або мобільним пристроєм. Якщо ви використовуєте тест-ранер WDIO, ви можете отримати доступ до екземпляра WebDriver через глобальний об'єкт browser
або driver
або імпортувати його з пакета @wdio/globals
. Якщо ви використовуєте WebdriverIO в автономному режимі, об'єкт browser повертається методом remote
.
Сесія ініціалізується тест-ранером. Те саме стосується і завершення сесії. Це також виконується процесом тест-ранера.
Властивості
Об'єкт browser має такі властивості:
Назва | Тип | Деталі |
---|---|---|
capabilities | Object | Призначені можливості від віддаленого сервера. Приклад: { |
requestedCapabilities | Object | Можливості, запитані від віддаленого сервера. Приклад: { browserName: 'chrome' } |
sessionId | String | Ідентифікатор сесії, призначений віддаленим сервером. |
options | Object | Опції WebdriverIO залежно від того, як був створений об'єкт browser. Дивіться більше в типах налаштування. |
commandList | String[] | Список команд, зареєстрованих для екземпляра браузера |
isW3C | Boolean | Вказує, чи це сесія W3C |
isChrome | Boolean | Вказує, чи це екземпляр Chrome |
isFirefox | Boolean | Вказує, чи це екземпляр Firefox |
isBidi | Boolean | Вказує, чи ця сесія використовує Bidi |
isSauce | Boolean | Вказує, чи ця сесія працює в Sauce Labs |
isMacApp | Boolean | Вказує, чи ця сесія працює для нативної програми Mac |
isWindowsApp | Boolean | Вказує, чи ця сесія працює для нативної програми Windows |
isMobile | Boolean | Вказує на мобільну сесію. Дивіться більше в розділі Мобільні прапори. |
isIOS | Boolean | Вказує на сесію iOS. Дивіться більше в розділі Мобільні прапори. |
isAndroid | Boolean | Вказує на сесію Android. Дивіться більше в розділі Мобільні прапори. |
isNativeContext | Boolean | Вказує, чи мобільний пристрій знаходиться в контексті NATIVE_APP . Дивіться більше в розділі Мобільні прапори. |
mobileContext | string | Надасть поточний контекст, в якому знаходиться драйвер, наприклад NATIVE_APP , WEBVIEW_<packageName> для Android або WEBVIEW_<pid> для iOS. Це заощадить додатковий WebDriver запит до driver.getContext() . Дивіться більше в розділі Мобільні прапори. |
Методи
На основі автоматизаційного бекенду, який використовується для вашої сесії, WebdriverIO визначає, які Протокольні команди будуть приєднані до об'єкта browser. Наприклад, якщо ви запускаєте автоматизовану сесію в Chrome, ви матимете доступ до специфічних команд Chromium, таких як elementHover
, але не до жодної з команд Appium.
Крім того, WebdriverIO надає набір зручних методів, які рекомендується використовувати для взаємодії з браузером або елементами на сторінці.
Додатково доступні такі команди:
Назва | Параметри | Деталі |
---|---|---|
addCommand | - commandName (Тип: String )- fn (Тип: Function )- attachToElement (Тип: boolean ) | Дозволяє визначати власні команди, які можна викликати з об'єкта browser для цілей композиції. Дізнайтеся більше в посібнику Користувацька команда. |
overwriteCommand | - commandName (Тип: String )- fn (Тип: Function )- attachToElement (Тип: boolean ) | Дозволяє перезаписати будь-яку команду браузера власною функціональністю. Використовуйте обережно, оскільки це може заплутати користувачів фреймворку. Дізнайтеся більше в посібнику Користувацька команда. |
addLocatorStrategy | - strategyName (Тип: String )- fn (Тип: Function ) | Дозволяє визначити власну стратегію селектора, дізнайтеся більше в посібнику Селектори. |
Примітки
Мобільні прапори
Якщо вам потрібно змінити свій тест залежно від того, чи виконується ваша сесія на мобільному пристрої, ви можете перевірити мобільні прапори.
Наприклад, за такої конфігурації:
// wdio.conf.js
export const config = {
// ...
capabilities: \\{
platformName: 'iOS',
app: 'net.company.SafariLauncher',
udid: '123123123123abc',
deviceName: 'iPhone',
// ...
}
// ...
}
Ви можете отримати доступ до цих прапорів у своєму тесті наступним чином:
// Примітка: `driver` еквівалентний об'єкту `browser`, але семантично більш правильний
// ви можете вибрати, яку глобальну змінну використовувати
console.log(driver.isMobile) // виведе: true
console.log(driver.isIOS) // виведе: true
console.log(driver.isAndroid) // виведе: false
Це може бути корисно, наприклад, якщо ви хочете визначити селектори у своїх об'єктах сторінок на основі типу пристрою, ось так:
// mypageobject.page.js
import Page from './page'
class LoginPage extends Page {
// ...
get username() {
const selectorAndroid = 'new UiSelector().text("Cancel").className("android.widget.Button")'
const selectorIOS = 'UIATarget.localTarget().frontMostApp().mainWindow().buttons()[0]'
const selectorType = driver.isAndroid ? 'android' : 'ios'
const selector = driver.isAndroid ? selectorAndroid : selectorIOS
return $(`${selectorType}=${selector}`)
}
// ...
}
Ви також можете використовувати ці прапори для запуску певних тестів лише для певних типів пристроїв:
// mytest.e2e.js
describe('my test', () => {
// ...
// запускати тест лише для пристроїв Android
if (driver.isAndroid) {
it('tests something only for Android', () => {
// ...
})
}
// ...
})