Реализация MCP для Selenium WebDriver

Функции

  • Запуск сессий браузера с кастомными параметрами
  • Навигация по URL-адресам
  • Поиск элементов с помощью различных стратегий локатора
  • Нажатие, ввод и взаимодействие с элементами
  • Выполнение действий мышью (наведение, перетаскивание)
  • Обработка ввода с клавиатуры
  • Создание скриншотов
  • Загрузка файлов
  • Поддержка headless-режима

Поддерживаемые браузеры

  • Chrome
  • Firefox

Использование с Goose

Вариант 1: Установка в один клик

Скопируйте и вставьте ссылку ниже в адресную строку браузера, чтобы добавить это расширение на рабочий стол goose:

goose://extension?cmd=npx&arg=-y&arg=%40angiejones%2Fmcp-selenium&id=selenium-mcp&name=Selenium%20MCP&description=automates%20browser%20interactions

Вариант 2: Добавьте вручную на рабочий стол или в CLI

  • Название: Selenium MCP
  • Описание: automates browser interactions
  • Команда: npx -y @angiejones/mcp-selenium

Использование с другими MCP-клиентами (например Claude Desktop и пр.):

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

Установка через Smithery

Для автоматической установки MCP Selenium for Claude Desktop через Smithery:

npx -y @smithery/cli install @angiejones/mcp-selenium --client claude

Ручная установка

npm install -g @angiejones/mcp-selenium

Использование

Запустите сервер, выполнив команду:

mcp-selenium

Или используйте NPX в конфигурации MCP:

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

Инструменты

start_browser

Запускает сессию браузера.

Параметры:

  • browser (обязательный): Браузер для запуска
    • Тип: строка
    • Enum: [«chrome», «firefox»]
  • options: Параметры конфигурации браузера
    • Тип: объект
    • Свойства:
      • headless: Запустить браузер в безголовом режиме
        • Тип: boolean
    • arguments: Дополнительные аргументы браузера
      • Тип: массив строк

Пример:

{
  "tool": "start_browser",
  "parameters": {
    "browser": "chrome",
    "options": {
      "headless": true,
      "arguments": ["--no-sandbox"]
    }
  }
}

navigate

Переход к URL-адресу.

Параметры:

  • url (обязательный): URL-адрес для перехода
    • Тип: строка

Пример:

{
  "tool": "navigate",
  "parameters": {
    "url": "https://www.example.com"
  }
}

find_element

Находит элемент на странице.

Параметры:

  • by (обязательный): Стратегия локатора
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора
    • Тип: строка
  • timeout: Максимальное время ожидания элемента в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "find_element",
  "parameters": {
    "by": "id",
    "value": "search-input",
    "timeout": 5000
  }
}

click_element

Нажимает на элемент.

Параметры:

  • by (обязательный): Стратегия локатора
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора
    • Тип: строка
  • timeout: Максимальное время ожидания элемента в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "click_element",
  "parameters": {
    "by": "css",
    "value": ".submit-button"
  }
}

send_keys

Отправляет символы элементу (вводит текст).

Параметры:

  • by (обязательный): Стратегия локатора
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора
    • Тип: строка
  • text (обязательный): Текст для ввода в элемент
    • Тип: строка
  • timeout: Максимальное время ожидания элемента в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "send_keys",
  "parameters": {
    "by": "name",
    "value": "username",
    "text": "testuser"
  }
}

get_element_text

Получает text() элемента.

Параметры:

  • by (обязательный): Стратегия локатора
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора
    • Тип: строка
  • timeout: Максимальное время ожидания элемента в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "get_element_text",
  "parameters": {
    "by": "css",
    "value": ".message"
  }
}

hover

Перемещает мышь для наведения на элемент.

Параметры:

  • by (обязательный): Стратегия локатора
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора
    • Тип: строка
  • timeout: Максимальное время ожидания элемента в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "hover",
  "parameters": {
    "by": "css",
    "value": ".dropdown-menu"
  }
}

drag_and_drop

Перетаскивает элемент и опускает его на другой элемент.

Параметры:

  • by (обязательный): Стратегия локатора для начального элемента
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора начального элемента
    • Тип: строка
  • targetBy (обязательный): Стратегия локатора для целевого элемента
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • targetValue (обязательный): Значение для стратегии локатора целевого элемента
    • Тип: строка
  • timeout: Максимальное время ожидания элементов в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "drag_and_drop",
  "parameters": {
    "by": "id",
    "value": "draggable",
    "targetBy": "id",
    "targetValue": "droppable"
  }
}

double_click

Выполняет двойной щелчок на элементе.

Параметры:

  • by (обязательный): Стратегия локатора
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора
    • Тип: строка
  • timeout: Максимальное время ожидания элемента в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "double_click",
  "parameters": {
    "by": "css",
    "value": ".editable-text"
  }
}

right_click

Выполняет щелчок правой кнопкой мыши (контекстный клик) на элементе.

Параметры:

  • by (обязательный): Стратегия локатора
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора
    • Тип: строка
  • timeout: Максимальное время ожидания элемента в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "double_click",
  "parameters": {
    "by": "css",
    "value": ".editable-text"
  }
}

press_key

Имитирует нажатие клавиши клавиатуры.

Параметры:

  • key (обязательный): Клавиша для нажатия (например ‘Enter’, ‘Tab’, ‘a’ и т. д.)
    • Тип: строка

Пример:

{
  "tool": "press_key",
  "parameters": {
    "key": "Enter"
  }
}

upload_file

Загружает файл с помощью элемента ввода файла.

Параметры:

  • by (обязательный): Стратегия локатора
    • Тип: строка
    • Enum: [«id», «css», «xpath», «name», «tag», «class»]
  • value (обязательный): Значение для стратегии локатора
    • Тип: string
  • filePath (обязательный): Абсолютный путь к файлу для загрузки
    • Тип: строка
  • timeout: Максимальное время ожидания элемента в миллисекундах
    • Тип: число
    • По умолчанию: 10000

Пример:

{
  "tool": "upload_file",
  "parameters": {
    "by": "id",
    "value": "file-input",
    "filePath": "/path/to/file.pdf"
  }
}

take_screenshot

Делает скриншот текущей страницы.

Параметры:

  • outputPath (необязательный): Путь, по которому будет сохранен скриншот. Если не указано, возвращает данные в формате base64.
    • Тип: строка

Пример:

{
  "tool": "take_screenshot",
  "parameters": {
    "outputPath": "/path/to/screenshot.png"
  }
}

close_session

Закрывает текущую сессию браузера и очищает ресурсы.

Параметры: Не требуются

Пример:

{
  "tool": "close_session",
  "parameters": {}
}

angiejones

Какой была ваша первая зарплата в QA и как вы искали первую работу?

Мега обсуждение в нашем телеграм-канале о поиске первой работы. Обмен опытом и мнения.

Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Мы в Telegram

Наш официальный канал
Полезные материалы и тесты
Готовимся к собеседованию
Project- и Product-менеджмент

? Популярное

? Telegram-обсуждения

Наши подписчики обсуждают, как искали первую работу в QA. Некоторые ищут ее прямо сейчас.
Наши подписчики рассказывают о том, как не бояться задавать тупые вопросы и чувствовать себя уверенно в новой команде.
Обсуждаем, куда лучше податься - в менеджмент или по технической ветке?
Говорим о конфликтных ситуациях в команде и о том, как их избежать
$1100*
медианная зарплата в QA в июне 2023

*по результатам опроса QA-инженеров в нашем телеграм-канале

Собеседование

19%*
IT-специалистов переехало или приняло решение о переезде из России по состоянию на конец марта 2022

*по результатам опроса в нашем телеграм-канале

live

Обсуждают сейчас