Перейти до основного вмісту

FAQ

Поширені запитання про WebdriverIO MCP.

Загальне

Що таке MCP?

MCP (Model Context Protocol) - це відкритий протокол, який дозволяє AI-асистентам, таким як Claude, взаємодіяти із зовнішніми інструментами та сервісами. WebdriverIO MCP реалізує цей протокол, щоб надати можливості автоматизації браузера та мобільних пристроїв для Claude Desktop та Claude Code.

Що я можу автоматизувати за допомогою WebdriverIO MCP?

Ви можете автоматизувати:

  • Десктопні браузери (Chrome) - навігацію, клацання, введення тексту, скріншоти
  • iOS додатки - на симуляторах або реальних пристроях
  • Android додатки - на емуляторах або реальних пристроях
  • Гібридні додатки - перемикання між нативним та веб-контекстами

Чи потрібно мені писати код?

Ні! Це головна перевага MCP. Ви можете описати природною мовою, що ви хочете зробити, і Claude використає відповідні інструменти для виконання завдання.

Приклади запитів:

  • "Відкрий Chrome і перейди на webdriver.io"
  • "Натисни кнопку Get Started"
  • "Зроби скріншот поточної сторінки"
  • "Запусти мій iOS додаток і увійди як тестовий користувач"

Встановлення і налаштування

Як встановити WebdriverIO MCP?

Вам не потрібно встановлювати його окремо. MCP-сервер запускається автоматично через npx, коли ви налаштовуєте його в Claude Desktop або Claude Code.

Додайте це до конфігурації Claude Desktop:

{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"]
}
}
}

Де знаходиться конфігураційний файл Claude Desktop?

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Чи потрібен Appium для автоматизації браузера?

Ні. Для автоматизації браузера потрібен лише встановлений Chrome. WebdriverIO автоматично керує ChromeDriver.

Чи потрібен Appium для мобільної автоматизації?

Так. Мобільна автоматизація вимагає:

  1. Запущений сервер Appium (npm install -g appium && appium)
  2. Встановлені драйвери платформ (appium driver install xcuitest для iOS, appium driver install uiautomator2 для Android)
  3. Відповідні інструменти розробки (Xcode для iOS, Android SDK для Android)

Автоматизація браузера

Які браузери підтримуються?

На даний момент підтримується лише Chrome. Підтримка інших браузерів може бути додана в майбутніх версіях.

Чи можу я запустити Chrome в режимі headless?

Так! Попросіть Claude запустити браузер у режимі headless:

"Запусти Chrome у режимі headless"

Або Claude використає цю опцію, коли доречно (наприклад, в контекстах CI/CD).

Чи можу я встановити розмір вікна браузера?

Так. Ви можете вказати розміри при запуску браузера:

"Запусти Chrome з розміром вікна 1920x1080"

Підтримувані розміри: 400-3840 пікселів у ширину, 400-2160 пікселів у висоту. За замовчуванням 1920x1080.

Чи можу я запустити браузер і перейти на сайт за один крок?

Так! Використовуйте параметр navigationUrl:

"Запусти Chrome і перейди на https://webdriver.io"

Це ефективніше, ніж запускати браузер, а потім окремо переходити.

Як робити скріншоти?

Просто попросіть Claude:

"Зроби скріншот поточної сторінки"

Скріншоти автоматично оптимізуються:

  • Масштабуються до макс. 2000px за розміром
  • Стискаються до макс. 1MB розміру файлу
  • Формат: PNG або JPEG (автоматично вибирається для оптимальної якості)

Чи можу я взаємодіяти з iframe?

Наразі MCP-сервер працює з основним документом. Взаємодія з iframe може бути додана в майбутніх версіях.

Чи можу я виконувати власний JavaScript?

Так! Використовуйте інструмент execute_script:

"Виконай скрипт, щоб отримати заголовок сторінки" "Виконай скрипт: return document.querySelectorAll('button').length"


Мобільна автоматизація

Як запустити iOS додаток?

Попросіть Claude з необхідними деталями:

"Запусти мій iOS додаток, розташований за шляхом /path/to/MyApp.app на симуляторі iPhone 15"

Або для встановленого додатку:

"Запусти додаток з увімкненим noReset на симуляторі iPhone 15"

Як запустити Android додаток?

"Запусти мій Android додаток за шляхом /path/to/app.apk на емуляторі Pixel 7"

Або для встановленого додатку:

"Запусти додаток з увімкненим noReset на емуляторі Pixel 7"

Чи можу я тестувати на реальних пристроях?

Так! Для реальних пристроїв вам потрібен UDID пристрою:

  • iOS: Підключіть пристрій, відкрийте Finder, натисніть на пристрій, натисніть на серійний номер, щоб показати UDID
  • Android: Запустіть adb devices в терміналі

Потім попросіть Claude:

"Запусти мій iOS додаток на реальному пристрої з UDID abc123..."

Як обробляти діалоги дозволів?

За замовчуванням, дозволи автоматично надаються (autoGrantPermissions: true). Якщо вам потрібно протестувати потоки дозволів, ви можете вимкнути це:

"Запусти мій додаток без автоматичного надання дозволів"

Які жести підтримуються?

  • Дотик: Дотик до елементів або за координатами
  • Свайп: Свайп вгору, вниз, ліворуч, праворуч
  • Перетягування: Перетягування з одного елемента на інший або за координатами

Примітка: long_press доступний через execute_script з мобільними командами Appium.

Як прокручувати в мобільних додатках?

Використовуйте жести свайпу:

"Свайп вгору, щоб прокрутити вниз" "Свайп вниз, щоб прокрутити вгору"

Чи можу я обертати пристрій?

Так:

"Оберни пристрій в ландшафтний режим" "Оберни пристрій в портретний режим"

Як працювати з гібридними додатками?

Для додатків з веб-представленнями ви можете перемикати контексти:

"Отримай доступні контексти" "Перемкнися на контекст webview" "Перемкнися назад на нативний контекст"

Чи можу я виконувати мобільні команди Appium?

Так! Використовуйте інструмент execute_script:

Execute script "mobile: pressKey" with args [{ keycode: 4 }]  // Натискання НАЗАД на Android
Execute script "mobile: activateApp" with args [{ appId: "com.example.app" }]
Execute script "mobile: terminateApp" with args [{ bundleId: "com.example.app" }]

Вибір елементів

Як Claude знає, з яким елементом взаємодіяти?

Claude використовує інструмент get_visible_elements для ідентифікації інтерактивних елементів на сторінці/екрані. Кожен елемент має кілька стратегій селекторів.

Що робити, якщо на сторінці забагато елементів?

Використовуйте пагінацію для керування великими списками елементів:

"Отримай перші 20 видимих елементів" "Отримай видимі елементи з відступом 20 і лімітом 20"

Відповідь включає total, showing, і hasMore, щоб допомогти навігації по елементах.

Чи можу я отримати лише певні типи елементів?

Так! Використовуйте параметр elementType:

  • interactable (за замовчуванням): Кнопки, посилання, поля введення
  • visual: Зображення, SVG
  • all: Обидва типи

"Отримай видимі візуальні елементи на сторінці"

Що робити, якщо Claude клацає не на той елемент?

Ви можете бути більш конкретними:

  • Надайте точний текст: "Натисни кнопку з текстом 'Submit Order'"
  • Надайте селектор: "Натисни елемент з селектором #submit-btn"
  • Надайте ID доступності: "Натисни елемент з ID доступності loginButton"

Яка найкраща стратегія селектора для мобільних?

  1. ID доступності (найкраще) - ~loginButton
  2. Resource ID (Android) - id=login_button
  3. Predicate String (iOS) - -ios predicate string:label == "Login"
  4. XPath (останній варіант) - повільніше, але працює всюди

Що таке дерево доступності і коли його використовувати?

Дерево доступності надає семантичну інформацію про елементи сторінки (ролі, назви, стани). Використовуйте get_accessibility, коли:

  • get_visible_elements не повертає очікувані елементи
  • Вам потрібно знайти елементи за роллю доступності (кнопка, посилання, текстове поле тощо)
  • Вам потрібна детальна семантична інформація про елементи

"Отримай дерево доступності з фільтрацією за ролями кнопок і посилань"


Керування сеансами

Чи можу я мати кілька сеансів одночасно?

Ні. MCP-сервер використовує модель одного сеансу. Одночасно може бути активний лише один сеанс браузера або додатку.

Що відбувається, коли я закриваю сеанс?

Це залежить від типу сеансу та налаштувань:

  • Браузер: Chrome повністю закривається
  • Мобільний з noReset: false: Додаток завершується
  • Мобільний з noReset: true або без appPath: Додаток залишається відкритим (сеанс автоматично від'єднується)

Чи можу я зберегти стан додатку між сеансами?

Так! Використовуйте опцію noReset:

"Запусти мій додаток з увімкненим noReset"

Це зберігає стан логіну, налаштування та інші дані додатку.

В чому різниця між закриттям і від'єднанням?

  • Закриття: Повністю завершує браузер/додаток
  • Від'єднання: Відключає автоматизацію, але зберігає браузер/додаток запущеним

Від'єднання корисне, коли ви хочете вручну перевірити стан після автоматизації.

Мій сеанс постійно закінчується під час відлагодження

Збільште тайм-аут команди:

"Запусти мій додаток з newCommandTimeout в 300 секунд"

За замовчуванням це 60 секунд. Для довгих сесій відлагодження спробуйте 300-600 секунд.


Усунення несправностей

Помилка "Session not found"

Це означає, що активний сеанс не існує. Спочатку запустіть сеанс браузера або додатку:

"Запусти Chrome і перейди на google.com"

Помилка "Element not found"

Елемент може бути невидимим або мати інший селектор. Спробуйте:

  1. Попросити Claude спочатку отримати всі видимі елементи
  2. Надати більш конкретний селектор
  3. Почекати, поки сторінка/додаток повністю завантажиться
  4. Використати inViewportOnly: false, щоб знайти елементи поза екраном

Браузер не запускається

  1. Переконайтеся, що Chrome встановлений
  2. Перевірте, чи інший процес не використовує порт відлагодження (9222)
  3. Спробуйте режим headless

Підключення до Appium не вдалося

Це найпоширеніша проблема при запуску мобільної автоматизації.

  1. Перевірте, чи працює Appium: curl http://localhost:4723/status
  2. Запустіть Appium, якщо потрібно: appium
  3. Перевірте, чи ваша конфігурація URL Appium відповідає серверу
  4. Переконайтеся, що драйвери встановлені: appium driver list --installed
порада

MCP-серверу потрібно, щоб Appium запустився до початку мобільних сеансів. Переконайтеся, що спочатку запустили Appium:

appium

Майбутні версії можуть включати автоматичне керування службою Appium.

Симулятор iOS не запускається

  1. Переконайтеся, що Xcode встановлений: xcode-select --install
  2. Перелічіть доступні симулятори: xcrun simctl list devices
  3. Перевірте наявність специфічних помилок симулятора в Console.app

Емулятор Android не запускається

  1. Встановіть ANDROID_HOME: export ANDROID_HOME=$HOME/Library/Android/sdk
  2. Перевірте емулятори: emulator -list-avds
  3. Запустіть емулятор вручну: emulator -avd <avd-name>
  4. Перевірте, чи підключений пристрій: adb devices

Скріншоти не працюють

  1. Для мобільних, переконайтеся, що сеанс активний
  2. Для браузера, спробуйте іншу сторінку (деякі сторінки блокують скріншоти)
  3. Перевірте журнали Claude Desktop на наявність помилок

Скріншоти автоматично стискаються до макс. 1МБ, тому великі скріншоти працюватимуть, але можуть бути нижчої якості.


Продуктивність

Чому мобільна автоматизація повільна?

Мобільна автоматизація включає:

  1. Мережеву комунікацію з сервером Appium
  2. Комунікацію Appium з пристроєм/симулятором
  3. Рендеринг та відповідь пристрою

Поради для швидшої автоматизації:

  • Використовуйте емулятори/симулятори замість реальних пристроїв для розробки
  • Використовуйте ID доступності замість XPath
  • Увімкніть inViewportOnly: true для виявлення елементів
  • Використовуйте пагінацію (limit) для зменшення використання токенів

Як прискорити виявлення елементів?

MCP-сервер вже оптимізує виявлення елементів за допомогою розбору XML-джерела сторінки (2 HTTP-запити замість 600+ для традиційних запитів елементів). Додаткові поради:

  • Тримайте inViewportOnly: true (за замовчуванням)
  • Встановіть includeContainers: false (за замовчуванням)
  • Використовуйте limit і offset для пагінації на великих екранах
  • Використовуйте конкретні селектори замість пошуку всіх елементів

Скріншоти повільні або не вдаються

Скріншоти автоматично оптимізуються:

  • Змінюють розмір, якщо більше ніж 2000px
  • Стискаються, щоб залишатися менше 1MB
  • Конвертуються в JPEG, якщо PNG занадто великий

Ця оптимізація зменшує час обробки та гарантує, що Claude може обробити зображення.


Обмеження

Які поточні обмеження?

  • Один сеанс: Тільки один браузер/додаток одночасно
  • Підтримка браузерів: Тільки Chrome (поки що)
  • Підтримка iframe: Обмежена підтримка iframe
  • Завантаження файлів: Не підтримується напряму через інструменти
  • Аудіо/Відео: Неможливо взаємодіяти з медіа-відтворенням
  • Розширення браузера: Не підтримуються

Чи можу я використовувати це для виробничого тестування?

WebdriverIO MCP розроблений для інтерактивної автоматизації за допомогою AI. Для виробничого CI/CD тестування розгляньте використання традиційного тест-раннера WebdriverIO з повним програмним контролем.


Безпека

Чи захищені мої дані?

MCP-сервер працює локально на вашому комп'ютері. Вся автоматизація відбувається через локальні з'єднання браузера/Appium. Ніякі дані не надсилаються на зовнішні сервери, крім тих, на які ви явно переходите.

Чи може Claude отримати доступ до моїх паролів?

Claude може бачити вміст сторінки та взаємодіяти з елементами, але:

  • Паролі в полях <input type="password"> маскуються
  • Вам слід уникати автоматизації з конфіденційними обліковими даними
  • Використовуйте тестові облікові записи для автоматизації

Внесок

Як я можу зробити внесок?

Відвідайте GitHub репозиторій, щоб:

  • Повідомити про помилки
  • Запитати функції
  • Подати pull-запити

Де я можу отримати допомогу?

Welcome! How can I help?

WebdriverIO AI Copilot