Команди Протоколу
WebdriverIO - це фреймворк для автоматизації, який покладається на різні протоколи автоматизації для керування віддаленим агентом, наприклад, для браузера, мобільного пристрою або телевізора. Залежно від віддаленого пристрою використовуються різні протоколи. Ці команди призначаються Браузеру або Елементу залежно від інформації сесії від віддаленого сервера (наприклад, драйвера браузера).
Внутрішньо WebdriverIO використовує команди протоколу для майже всіх взаємодій з віддаленим агентом. Однак додаткові команди, призначені Браузеру або Елементу, спрощують використання WebdriverIO. Наприклад, отримання тексту елемента за допомогою команд протоколу виглядало б так:
const searchInput = await browser.findElement('css selector', '#lst-ib')
await client.getElementText(searchInput['element-6066-11e4-a52e-4f735466cecf'])
Використовуючи зручні команди Браузера або Елемента, це можна скоротити до:
$('#lst-ib').getText()
У наступному розділі пояснюється кожен окремий протокол.
Протокол WebDriver
WebDriver - це веб-стандарт для автоматизації браузера. На відміну від деяких інших інструментів E2E, він гарантує, що автоматизацію можна виконувати на реальних браузерах, які використовують ваші користувачі, наприклад, Firefox, Safari та Chrome, а також на браузерах на основі Chromium, як-от Edge, а не лише на рушіях браузера, наприклад, WebKit, які сильно відрізняються.
Перевага використання протоколу WebDriver на противагу протоколам налагодження, таким як Chrome DevTools, полягає в тому, що ви маєте певний набір команд, які дозволяють взаємодіяти з браузером однаково у всіх браузерах, що зменшує ймовірність нестабільності. Крім того, цей протокол пропонує можливості для масштабного масштабування за допомогою хмарних постачальників, таких як Sauce Labs, BrowserStack та інших.
Протокол WebDriver Bidi
WebDriver Bidi - це друге покоління протоколу, над яким зараз працює більшість виробників браузерів. Порівняно з попередником, протокол підтримує двосторонній зв'язок (звідси "Bidi") між фреймворком і віддаленим пристроєм. Крім того, він впроваджує додаткові примітиви для кращої інтроспекції браузера для кращої автоматизації сучасних веб-додатків у браузері.
Оскільки цей протокол зараз перебуває в процесі розробки, з часом будуть додаватися нові функції, які підтримуватимуться браузерами. Якщо ви використовуєте зручні команди WebdriverIO, для вас нічого не зміниться. WebdriverIO буде використовувати ці нові можливості протоколу, як тільки вони стануть доступними і підтримуваними в браузері.
Appium
Проект Appium надає можливості для автоматизації мобільних, настільних та всіх інших видів IoT-пристроїв. Якщо WebDriver фокусується на браузері і вебі, то бачення Appium полягає у використанні того ж підходу, але для будь-якого довільного пристрою. На додаток до команд, які визначає WebDriver, він має спеціальні команди, які часто специфічні для віддаленого пристрою, що автоматизується. Для сценаріїв мобільного тестування це ідеально, коли ви хочете писати і запускати одні й ті ж тести як для Android, так і для iOS додатків.
Згідно з документацією Appium, він був розроблений для задоволення потреб мобільної автоматизації відповідно до філософії, окресленої чотирма принципами:
- Вам не потрібно перекомпілювати свій додаток або модифікувати його будь-яким чином для автоматизації.
- Ви не повинні бути обмежені конкретною мовою або фреймворком для написання та запуску своїх тестів.
- Фреймворк мобільної автоматизації не повинен винаходити колесо, коли йдеться про API автоматизації.
- Фреймворк мобільної автоматизації повинен бути відкритим кодом, як за духом і практикою, так і за назвою!
Chromium
Протокол Chromium пропонує супер-набір команд на базі протоколу WebDriver, який підтримується лише при запуску автоматизованих сесій через Chromedriver або Edgedriver.
Firefox
Протокол Firefox пропонує супер-набір команд на базі протоколу WebDriver, який підтримується лише при запуску автоматизованих сесій через Geckodriver.
Sauce Labs
Протокол Sauce Labs пропонує супер-набір команд на базі протоколу WebDriver, який підтримується лише при запуску автоматизованих сесій з використанням хмари Sauce Labs.
Selenium Standalone
Протокол Selenium Standalone пропонує супер-набір команд на базі протоколу WebDriver, який підтримується лише при запуску автоматизованих сесій з використанням Selenium Grid.
JSON Wire Protocol
JSON Wire Protocol - це попередник протоколу WebDriver і сьогодні застарілий. Хоча деякі команди все ще можуть підтримуватися в певних середовищах, не рекомендується використовувати будь-які з його команд.
Mobile JSON Wire Protocol
Mobile JSON Wire Protocol - це супер-набір мобільних команд на базі JSON Wire Protocol. Оскільки цей протокол застарілий, Mobile JSON Wire Protocol також став застарілим. Appium все ще може підтримувати деякі з його команд, але їх використання не рекомендується.