Инструменты
Следующие инструменты доступны через сервер WebdriverIO MCP. Эти инструменты позволяют ИИ-ассистентам автоматизировать браузеры и мобильные приложения.
Управление сессиями
start_browser
Запускает сессию браузера Chrome.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
headless | boolean | Нет | false | Запуск Chrome в режиме без интерфейса |
windowWidth | number | Нет | 1920 | Ширина окна браузера (400-3840) |
windowHeight | number | Нет | 1080 | Высота окна браузера (400-2160) |
navigationUrl | string | Нет | - | URL, на который нужно перейти после запуска браузера |
Пример
Start a browser with 1920x1080 resolution and navigate to webdriver.io
Поддержка
- Настольные браузеры
start_app_session
Запускает сессию мобильного приложения на iOS или Android через Appium.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
platform | string | Да | - | Платформа для автоматизации: iOS или Android |
deviceName | string | Да | - | Имя устройства или симулятора/эмулятора |
appPath | string | Нет* | - | Путь к файлу приложения (.app, .ipa, или .apk) |
platformVersion | string | Нет | - | Версия ОС (например, 17.0, 14) |
automationName | string | Нет | Auto | XCUITest (iOS), UiAutomator2 или Espresso (Android) |
udid | string | Нет | - | Уникальный идентификатор устройства (необходим для реальных устройств iOS) |
noReset | boolean | Нет | false | Сохранить состояние приложения между сессиями |
fullReset | boolean | Нет | true | Удалить и переустановить приложение перед сессией |
autoGrantPermissions | boolean | Нет | true | Автоматически предоставлять разрешения приложению |
autoAcceptAlerts | boolean | Нет | true | Автоматически принимать системные уведомления |
autoDismissAlerts | boolean | Нет | false | Отклонять (вместо принятия) уведомления |
appWaitActivity | string | Нет | - | Активность, которую нужно дождаться при запуске (только Android) |
newCommandTimeout | number | Нет | 60 | Секунды до истечения времени сессии из-за бездействия |
appiumHost | string | Нет | 127.0.0.1 | Хост сервера Appium |
appiumPort | number | Нет | 4723 | Порт сервера Appium |
appiumPath | string | Нет | / | Путь сервера Appium |
*Либо должен быть предоставлен appPath, либо noReset: true для подключения к уже запущенному приложению.
Пример
Start an iOS app session on iPhone 15 simulator with my app at /path/to/app.app
Поддержка
- Симуляторы iOS
- Реальные устройства iOS
- Эмуляторы Android
- Реальные устройства Android
close_session
Закрывает текущую сессию браузера или приложения.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
detach | boolean | Нет | false | Отсоединиться от сессии вместо закрытия (оставляет браузер/приложение запущенным) |
Примечания
Сессии с noReset: true или без appPath автоматически отсоединяются при закрытии для сохранения состояния.
Поддержка
- Настольные браузеры
- Мобильные приложения
Навигация
navigate
Переходит по URL.
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
url | string | Да | URL, на который нужно перейти |
Пример
Navigate to https://webdriver.io
Поддержка
- Настольные браузеры
Взаимодействие с элементами
click_element
Кликает на элемент, определенный селектором.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
selector | string | Да | - | CSS селектор, XPath или мобильный селектор |
scrollToView | boolean | Нет | true | Прокрутить страницу до элемента перед кликом |
timeout | number | Нет | 3000 | Мак симальное время ожидания элемента (мс) |
Примечания
- Поддерживает текстовые селекторы WebdriverIO:
button=Точный текстилиa*=Содержит текст - Использует центральное выравнивание для позиционирования прокрутки
Пример
Click the element with selector "#submit-button"
Поддержка
- Настольные браузеры
- Нативные мобильные приложения
set_value
Вводит текст в поле ввода.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
selector | string | Да | - | Селектор для элемента ввода |
value | string | Да | - | Текст для ввода |
scrollToView | boolean | Нет | true | Прокрутить до элемента перед вводом |
timeout | number | Нет | 3000 | Максимальное время ожидания элемента (мс) |
Примечания
Очищает существующее значение перед вводом нового текста.
Пример
Set the value "john@example.com" in the element with selector "#email"
Поддержка
- Настольные браузеры
- Нативные мобильные приложения
Анализ страницы
get_visible_elements
Получает видимые и интерактивные элементы на текущей странице или экране. Это основной инструмент для обнаружения доступных для взаимодействия элементов.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
elementType | string | Нет | interactable | Тип элементов: interactable (кнопки/ссылки/поля ввода), visual (изображения/SVG), или all |
inViewportOnly | boolean | Нет | true | Возвращать только элементы, видимые во viewport |
includeContainers | boolean | Нет | false | Включать контейнеры макета (ViewGroup, ScrollView и т.д.) |
includeBounds | boolean | Нет | false | Включать координаты элемента (x, y, ширина, высота) |
limit | number | Нет | 0 | Максимальное количество возвращаемых элементов (0 = неограниченно) |
offset | number | Нет | 0 | Количество элементов для пропуска (для пагинации) |
Возвращает
{
"total": 42,
"showing": 20,
"hasMore": true,
"elements": [...]
}
Веб-элементы включают: tagName, type, id, className, textContent, value, placeholder, href, ariaLabel, role, cssSelector, isInViewport
Мобильные элементы включают: Несколько стратегий локаторов (accessibility ID, resource ID, XPath, UiAutomator/predicates), тип элемента, текст и, опционально, границы
Примечания
- Веб: Использует оптимизированный браузерный скрипт для быстрого обнаружения элементов
- Мобильные: Использует эффективный разбор XML исходного кода страницы (2 HTTP-вызова вместо 600+ для запросов элементов)
- Используйте пагинацию (
limitиoffset) для больших страниц, чтобы уменьшить использование токенов
Пример
Get all visible elements on the page with their coordinates
Поддержка
- Настольные браузеры
- Мобильные приложения
get_accessibility
Получает дерево доступности текущей страницы с семантической информацией о ролях, именах и состояниях.
Параметры
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
limit | number | Нет | 100 | Максимальное количество узлов для возврата (0 = неограниченно) |
offset | number | Нет | 0 | Количество узлов для пропуска (для пагинации) |
roles | string[] | Нет | Все | Фильтр по определенным ролям (например, ["button", "link", "textbox"]) |
namedOnly | boolean | Нет | true | Возвращать только узлы с именем/меткой |
Возвращает
{
"total": 85,
"showing": 100,
"hasMore": false,
"nodes": [
{ "role": "button", "name": "Submit" },
{ "role": "link", "name": "Home" }
]
}
Примечания
- Только для браузера. Для мобильных приложений используйте вместо этого
get_visible_elements - Полезно, когда
get_visible_elementsне возвращает ожидаемые элементы namedOnly: trueотфильтровывает анонимные контейнеры и уменьшает шум
Поддержка
- Настольные браузеры
Скриншоты
take_screenshot
Делает скриншот текущего видимого экрана.
Параметры
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
outputPath | string | Нет | Путь для сохранения файла скриншота. Если опущен, возвращает данные в base64 |
Возвращает
Данные изображения в формате Base64 (PNG или JPEG) с информацией о размере.
Примечания
Скриншоты автоматически оптимизируются:
- Максимальный размер: 2000 пикселей (масштабируется, если больше)
- Максимальный размер файла: 1МБ
- Формат: PNG с максимальным сжатием или JPEG, если необходимо соблюсти лимит размера
Поддержка
- Настольные браузеры
- Мобильные приложения
Прокрутка
scroll
Прокручивает страницу вверх или вниз на указанное количество пикселей.
Параметры
| Параметр | Тип | Обязательный | По умолчанию |
|---|