Перейти к основному содержанию

Часто задаваемые вопросы

Часто задаваемые вопросы о WebdriverIO MCP.

Общая информация

Что такое MCP?

MCP (Model Context Protocol) — это открытый протокол, который позволяет ИИ-ассистентам, таким как Claude, взаимодействовать с внешними инструментами и сервисами. WebdriverIO MCP реализует этот протокол, чтобы предоставить возможности автоматизации браузеров и мобильных устройств для Claude Desktop и Claude Code.

Что можно автоматизировать с помощью WebdriverIO MCP?

Вы можете автоматизировать:

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

Нужно ли писать код?

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

Примеры запросов:

  • "Открой Chrome и перейди на webdriver.io"
  • "Нажми кнопку 'Начать работу'"
  • "Сделай скриншот текущей страницы"
  • "Запусти мое 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 в безголовом режиме?

Да! Попросите Claude запустить браузер в безголовом режиме:

"Запусти Chrome в безголовом режиме"

Или Claude будет использовать эту опцию, когда это уместно (например, в контекстах CI/CD).

Можно ли установить размер окна браузера?

Да. Вы можете указать размеры при запуске браузера:

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

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

Можно ли запустить браузер и перейти на страницу в один шаг?

Да! Используйте параметр navigationUrl:

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

Это эффективнее, чем сначала запускать браузер, а затем отдельно переходить на сайт.

Как делать скриншоты?

Просто попросите Claude:

"Сделай скриншот текущей страницы"

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

  • Масштабируются до максимального размера 2000px
  • Сжимаются до максимального размера файла 1МБ
  • Формат: 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.

Как прокручивать содержимое в мобильных приложениях?

Используйте жесты свайпа:

"Сделай свайп вверх для прокрутки вниз" "Сделай свайп вниз для прокрутки вверх"

Можно ли повернуть устройство?

Да:

"Поверни устройство в альбомную ориентацию" "Поверни устройство в портретную ориентацию"

Как работать с гибридными приложениями?

Для приложений с веб-представлениями можно переключаться между контекстами:

"Получи доступные контексты" "Переключись на контекст веб-представления" "Вернись в нативный контекст"

Можно ли выполнять мобильные команды Appium?

Да! Используйте инструмент execute_script:

Execute script "mobile: pressKey" with args [{ keycode: 4 }]  // Нажатие BACK на 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-btn"
  • Указать ID доступности: "Нажми на элемент с ID доступности loginButton"

Какая стратегия выбора элементов лучше для мобильных устройств?

  1. Accessibility 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. Попробуйте безголовый режим

Ошибка подключения к 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 Simulator не запускается

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

Android Emulator не запускается

  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. Рендеринг и отклик устройства

Советы для ускорения автоматизации:

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

Как ускорить обнаружение элементов?

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

  • Оставьте inViewportOnly: true (по умолчанию)
  • Установите includeContainers: false (по умолчанию)
  • Используйте limit и offset для пагинации на больших экранах
  • Используйте конкретные селекторы вместо поиска всех элементов

Скриншоты медленные или не работают

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

  • Изменяется размер, если он больше 2000px
  • Сжимаются, чтобы оставаться меньше 1МБ
  • Конвертируются в JPEG, если PNG слишком большой

Эта оптимизация сокращает время обработки и обеспечивает возможность обработки изображения Claude.


Ограничения

Каковы текущие ограничения?

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

Могу ли я использовать это для производственного тестирования?

WebdriverIO MCP разработан для интерактивной автоматизации с помощью ИИ. Для производственного тестирования CI/CD рекомендуется использовать традиционный тестовый раннер WebdriverIO с полным программным контролем.


Безопасность

Насколько безопасны мои данные?

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

Может ли Claude получить доступ к моим паролям?

Claude может видеть содержимое страницы и взаимодействовать с элементами, но:

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

Вклад в развитие

Как я могу внести свой вклад?

Посетите GitHub репозиторий, чтобы:

  • Сообщить об ошибках
  • Запросить функции
  • Отправить pull-запросы

Где я могу получить помощь?

Welcome! How can I help?

WebdriverIO AI Copilot