Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Web-шпион/рекордер

Расширение предназначено для получения селекторов (XPath и CSS) элементов веб-страниц и их передачи в Студию для автоматизации, а также для записи действий пользователя в браузере.

1. Установка

Автоматическая

Установите расширение из официального магазина дополнений (Chrome Web Store или Firefox Add-ons) по ссылке из Студии.

Ручная (режим разработчика)

Для Chrome:

  1. Скачайте и распакуйте архив с расширением.

  2. Перейдите на страницу chrome://extensions/.

  3. Включите «Режим разработчика» (Developer mode).

  4. Нажмите «Загрузить распакованное расширение»

и выберите
  1. .

  2. Укажите папку с файлами расширения в проводнике.

Для Firefox:

  1. Перейдите на страницу about:addons.

  2. Нажмите на иконку шестеренки

->
  1. .

  2. Нажмите «Установить дополнение из файла...» в открывшемся меню.

Выберите
  1. Укажите файл расширения в формате .xpi в проводнике.

2. Интерфейс виджета

При

По нажатии на иконку расширения открывается виджет

со следующими элементами:

.

  • Вкладка «Web-шпион» – содержит параметры шпиона для захвата элементов страницы.
  • Вкладка «Web-рекордер» – содержит параметры рекордера для записи действий в браузере.
  • Кнопка смены режима закрепления – плавающий или в боковой панели.

Вкладка «Web-шпион»

Image Added

Чекбоксы
  • Опции

  • «Полный XPath» / «Полный CSS-селектор»

:
  • переключают режим записи между коротким (относительным) и полным (абсолютным) путем.

  • Кнопка «Указать элемент»

: активирует
  • – активирует режим выбора объекта на странице.

  • Поля

XPath
  • цXPath» и

CSS
  • «CSS-

селектор:
  • селектор»отображают полученные данные.

  • Переключатель «Режим поиска»

:
  • выбор типа селектора для проверки.

  • Кнопка «Найти элемент»

: проверяет
  • – проверяет наличие элемента на странице по введенному селектору.

  • Кнопка «Сохранить»

:
  • передает данные в Студию.

3. Порядок работы

Захват элемента

  1. Откройте нужную веб-страницу.

  2. Откройте виджет шпиона и нажмите «Указать элемент».

  3. Наведите курсор на нужный объект (он подсветится) и нажмите ЛКМ.

  4. Данные автоматически появятся в полях «XPath» и «CSS-селектор». Кнопка «Сохранить» станет активной.

    • Для отмены режима выбора до клика снова откройте виджет и нажмите «Отменить выбор элемента».

Вкладка «Web-рекордер»

Image AddedImage Added

  • Опции «Полный XPath» / «Полный CSS-селектор» – переключают режим записи между коротким (относительным) и полным (абсолютным) путем.
  • Опция «Делать скриншоты элементов» – переключает режим создания скриншота захватываемого элемента.
  • Опция «Вставить после выбранного действия» – переключает режим вставки записанных действий на схему робота.
  • Индикатор браузера, в котором открыто расширение.
  • Кнопка «Начать» – активирует запись действий пользователя. Сменяется кнопками:
    • «Пауза» – приостанавливает запись, дальнейшие действия не записываются.
    • «Стоп» – останавливает запись, отправляет полученные данные в Студию.
    • «Отменить» – отменяет запись, имеющиеся данные удаляются.

3. Порядок работы

Шпион

  1. 1. Выбор
Выбор
  1. типа селектора
    • Короткий путь (по умолчанию): создает лаконичные селекторы (например, //button[@id="login"]). Рекомендуется для стабильной работы.

    • Полный путь: если активны чекбоксы «Полный...», генерируется абсолютный путь от корня страницы (/html/body/...). Используйте, если у элемента нет уникальных атрибутов.

  2. Захват элемента
    1. Откройте нужную веб-страницу.

    2. Откройте виджет шпиона и нажмите «Указать элемент».

    3. Наведите курсор на нужный объект (он подсветится) и нажмите ЛКМ.

    4. Данные автоматически появятся в полях «XPath» и «CSS-селектор». Кнопка «Сохранить» станет активной.

      • Для отмены режима выбора до клика снова откройте виджет и нажмите «Отменить выбор элемента».

  3. Проверка (валидация)
    1. Выберите режим поиска (XPath или CSS-селектор).

    2. Введите или измените значение в поле.

    3. Нажмите «Найти элемент»:

      • Если элемент один — он подсветится на 2 секунды.

      • Если элементов несколько — отобразится их количество (подсветки не будет).

      • Если элементов нет — отобразится «Найдено элементов: 0».

  4. Сохранение
    • Нажмите «Сохранить». Данные будут мгновенно переданы в открытое окно создания/редактирования элемента в Студии.

Рекодер

  1. Настройка параметров
    • Короткий путь (по умолчанию): создает лаконичные селекторы (например, //button[@id="login"]). Рекомендуется для стабильной работы.

    • Полный путь: если активны чекбоксы «Полный...», генерируется абсолютный путь от корня страницы (/html/body/...). Используйте, если у элемента нет уникальных атрибутов.

  2. Запись действий
    1. Откройте нужную веб-страницу.
    2. Откройте виджет шпиона и нажмите «Начать».
      1. Если отсутствует открытый проект робота, начать запись не получится.
    3. Для приостановки записи откройте виджет, нажмите «Пауза».
    4. Для остановки записи нажмите «Стоп». Полученные данные будут переданы в Студию: будут созданы действия робота, повторяющие записанные действия пользователя, а также ресурсы робота, содержащие информацию об элементах, с которыми взаимодействовал пользователь.

4. Особенности работы

  • Связь со Студией: Для корректной работы не закрывайте Студию

и страницу, на которой используется шпион
  • до окнчания работы со шпионом/рекордером.

  • Автономность: Расширение работает без доступа к интернету (в локальных сетях)

.
  • Протоколы: Поддерживаются сайты на http:// и https://.

  • Динамические элементы: Шпион автоматически обрабатывает элементы с динамическими ID, стараясь подобрать стабильный путь
    • .

    Оглавление
    classtoc-float

    HTML
    <script>
      AJS.toInit(function() {
        var toc        = document.querySelector('.toc-float');
        var aside      = toc.closest('.cell.aside');
        var mainHeader = document.getElementById('main-header');
        var auiHeader  = document.querySelector('nav.aui-header');
        var marginTop  = 10; // дополнительный отступ сверху
    
        // Вставка заголовка, если ещё не вставлен
        function insertHeader() {
          if (!toc.querySelector('.toc-header')) {
            var header = document.createElement('div');
            header.textContent = 'На этой странице:';
            header.className = 'toc-header';
            header.style.fontWeight = 'bold';
            header.style.marginBottom = '10px';
            toc.insertBefore(header, toc.firstChild);
          }
        }
    
        // Применение inline-стилей
        function applyStyles() {
          insertHeader();
    
          // Получаем ширину родителя
          var asideRect = aside.getBoundingClientRect();
    
          // Вычисляем вертикальный отступ
          var offset = 0;
          if (mainHeader) {
            var mhRect = mainHeader.getBoundingClientRect();
            if (mhRect.bottom > 0 && mhRect.top < window.innerHeight) {
              offset = mhRect.bottom;
            }
          }
          if (offset === 0 && auiHeader) {
            var ahRect = auiHeader.getBoundingClientRect();
            offset = ahRect.bottom;
          }
          var topOffset = Math.max(offset + marginTop, asideRect.top);
    
          Object.assign(toc.style, {
            position:     'fixed',
            top:          topOffset + 'px',
            left:         asideRect.left + 'px',
            width:        asideRect.width + 'px',
            maxHeight:    (window.innerHeight - topOffset - 20) + 'px',
            overflowY:    'auto',
            boxSizing:    'border-box',
            border:       '1px solid #ddd',
            borderRadius: '4px',
            padding:      '15px',
            zIndex:       'auto'
          });
        }
    
        // Инициалный вызов
        applyStyles();
    
        // Обновление при скролле, ресайзе окна
        window.addEventListener('scroll', applyStyles);
        window.addEventListener('resize', applyStyles);
    
        // Наблюдатель за изменением размеров родителя
        if (window.ResizeObserver) {
          new ResizeObserver(applyStyles).observe(aside);
        }
      });
    </script>