Добавить в корзинуПозвонить
Найти в Дзене

Автоматизация обработки карточек в «Активном гражданине» с помощью UI Vision

Всё началось с обычной задачи: мне нужно было обработать множество карточек в проекте «Активного гражданина» на mos.ru, страница https://ag.mos.ru/novelties. Карточки появлялись постоянно, и ручная работа занимала слишком много времени. Я думал, что пойду проверю их по факту появлений, но потом решил: лучше автоматизировать процесс. Наша цель была проста: Первый вопрос: как это сделать? Я перебирал доступные инструменты автоматизации браузера — от простых скриптов на Python до более сложных решений вроде Selenium. Но всё было либо слишком громоздко, либо неудобно для повседневной работы. После небольшого поиска я наткнулся на инструмент UI Vision (в частности, расширение для браузера с макросами UI Vision RPA). Идея была привлекательна: записывать свои действия в браузере как макрос, а затем запускать его многократно. Всё это — без необходимости писать код вручную. Я быстро освоил базовые команды: С их помощью я написал макрос, который: В конце макрос проверял finished и выводил итог:
Оглавление

Всё началось с обычной задачи: мне нужно было обработать множество карточек в проекте «Активного гражданина» на mos.ru, страница https://ag.mos.ru/novelties. Карточки появлялись постоянно, и ручная работа занимала слишком много времени. Я думал, что пойду проверю их по факту появлений, но потом решил: лучше автоматизировать процесс.

Наша цель была проста:

  • открывать список актуальных карточек;
  • по очереди заходить в каждую;
  • находить кнопку рейтинга с надписью «Хорошо»;
  • кликать по ней;
  • закрывать появившиеся модальные окна;
  • и, в конце концов, получить точное количество обработанных карточек.

Первый вопрос: как это сделать? Я перебирал доступные инструменты автоматизации браузера — от простых скриптов на Python до более сложных решений вроде Selenium. Но всё было либо слишком громоздко, либо неудобно для повседневной работы.

Нашёл UI Vision

После небольшого поиска я наткнулся на инструмент UI Vision (в частности, расширение для браузера с макросами UI Vision RPA). Идея была привлекательна: записывать свои действия в браузере как макрос, а затем запускать его многократно. Всё это — без необходимости писать код вручную.

Я быстро освоил базовые команды:

  • open — открыть страницу;
  • waitForElementPresent — ждать появления элемента;
  • storeXpathCount — посчитать элементы по XPath;
  • click — клик по элементу;
  • if_v2, while_v2 — условия и циклы;
  • storeAttribute — получить атрибут элемента (например, href);
  • echo — вывести сообщение в лог.

С их помощью я написал макрос, который:

  1. Запускается по бесконечному циклу while_v2 с ограничением на 9999 проходов.
  2. Каждый проход открывает страницу:
    https://ag.mos.ru/novelties?filters=active
  3. Ждёт появления списка карточек (//ag-cards-list-container//a).
  4. Считает количество карточек через storeXpathCount.
  5. Если карточек нет — ставит переменную finished = 1 и выходит из цикла.
  6. Берёт первую карточку, получает её href и сохраняет в currentUrl.
  7. Если currentUrl совпадает с lastUrl — значит, мы уже обрабатывали эту карточку, и цикл тоже завершается.
  8. Клик по первой карточке, переход внутрь.
  9. Ждёт появления кнопки рейтинга с надписью «Хорошо».
  10. Если кнопка не найдена — цикл завершается.
  11. Клик по кнопке «Хорошо».
  12. Пауза 200 мс.
  13. Проверка, появилось ли модальное окно (ag-modal/div[2]), и если есть — клик для закрытия.
  14. Увеличение счётчика обработанных карточек doneCount.
  15. Вывод в лог: Обработано: ${doneCount}.

В конце макрос проверял finished и выводил итог:
Работа завершена. Обработано карточек: ${doneCount}.

Возникла проблема: счётчик не работал

Всё было почти готово, но тут появилась критическая проблема: счётчик doneCount не увеличивался. В логе я видел:

textОбработано: javascript{Number(storedVars.doneCount) + 1}

То есть вместо числа — текст. А в первой попытке выполнения макроса UI Vision вообще выдавал ошибку:

textError in executeScript code: storedVars is not defined

Я долго искал, что не так. В скрипте использовалась команда:

json{
"Command": "store",
"Target": "javascript{Number(storedVars.doneCount) + 1}",
"Value": "doneCount"
}

Это старый синтаксис из storeEval, где для доступа к переменным использовался объект storedVars. В новых версиях UI Vision (RPA v7+) команда executeScript уже не работает с storedVars. Переменные доступны напрямую, и их нужно подставлять через ${varName}.

Правильный подход оказался таким:

json{
"Command": "executeScript",
"Target": "return Number(${doneCount}) + 1;",
"Value": "doneCount"
}

Ключевые моменты:

  • используем executeScript, а не store ... javascript{...};
  • внутри кода variables подставляются как ${doneCount};
  • возвращаем новое значение через return.

После этой замены счётчик стал работать: в логе появился нормальный числовой результат:

textОбработано: 1
Обработано: 2
Об_processed: 3
...
Работа завершена. Обработано карточек: 57

Что я получил в итоге

С этим макросом я:

  • автоматизировал полную обработку карточек в «Активном гражданине»;
  • избавился от ручного клика по каждой карточке;
  • получил точный итоговый счётчик обработанных карточек;
  • сэкономил огромное количество времени.

Макрос теперь можно запускать:

  • вручную, когда нужно быстро обработать новые карточки;
  • периодически, по расписанию, чтобы не пропускать появившиеся проекты.

Кому это может быть полезно

  • Тем, кто работает с сайтами «Активного гражданина» и mos.ru, копит баллы для обмена на ценные призы и регулярно сталкивается с большими списками карточек.
  • Тем, кто хочет автоматизировать повторяющиеся действия в браузере, но не хочет писать код на Python/JS.
  • Тем, кто уже использует UI Vision, но столкнулся с проблемами старого синтаксиса storedVars и storeEval.

Итог

Эта задача показала, как один инструмент — UI Vision — может превратить утомительную ручную работу в полностью автоматический процесс. Главное — не бояться экспериментировать с командами, читать документацию и, конечно, правильно использовать новые версии синтаксиса.

Если вы тоже столкнулись с проблемой storedVars is not defined или счётчик не увеличивается — попробуйте заменить старую команду store ... javascript{...} на executeScript с return Number(${var}) + 1;. Это простое изменение спасает макрос от краха и делает его стабильным.

Где скачать расширение

UI Vision — это бесплатное расширение для браузера, которое можно установить в один клик:

После установки в правом верхнем углу браузера появится значок UI.Vision RPA (иконка с камерой/роботом).

Как использовать скрипт в UI Vision

1. Откройте интерфейс макросов

  1. Нажмите на значок UI.Vision RPA в панели браузера.
  2. Откроется окно расширения. В левом нижнем углу убедитесь, что выбран режим Macro (не Vision).
  3. В списке макросов вы увидите пустой список или встроенные примеры.

2. Создайте новый макрос

  1. Нажмите кнопку + Macro (или иконку «плюс»).
  2. Введите имя макроса, например: New.
  3. Нажмите Confirm.

3. Вставьте наш JSON-скрипт

У вас есть два варианта:

Вариант A: Импорт через Source

  1. В окне макроса перейдите во вкладку Source (источник).
  2. Сотрите всё содержание поля.
  3. Вставьте весь JSON-код скрипта, который я дал выше (от { до }).
  4. Нажмите Save (или кнопку дискеты).

Вариант B: Ручной ввод (если импорт не работает)

Если импорт JSON не работает, можно создать макрос вручную, добавляя команды по одной:

  1. В панели макроса нажмите + Add command.
  2. Для каждой строки скрипта выберите:
    Command — тип команды (например, store, while_v2, open, click, executeScript);
    Target — целевое значение (XPath, JavaScript, URL и т.д.);
    Value — значение переменной (если нужно).
  3. После ввода всех команд нажмите Save.

Но для вашего случая удобнее именно импорт через Source — так вы сразу получите полный рабочий макрос.

4. Запустите макрос

  1. Убедитесь, что макрос выбран в списке.
  2. Нажмите кнопку Play (треугольник) в верхнем меню расширения.
  3. Макрос начнёт выполнение:
    откроет https://ag.mos.ru/novelties?filters=active;
    начнёт проходить по карточкам;
    кликать «Хорошо», закрывать модальные окна;
    выводить в лог:
    Текущая карточка: /novelties/24522
    Обработано: 1
    Обработано: 2
    и т.д.

5. Отслеживайте прогресс

  • В окне UI Vision вы увидите лог выполнения с командами:
    [info] Executing: ...
    [echo] Текущая карточка: ...
    [echo] Обработано: ...
  • Если всё работает корректно, в конце вы увидите:textРабота завершена. Обработано карточек: 57(или другое число, в зависимости от количества карточек).

Скачать макрос можно по ссылке

Это простой текстовый файл

Перед запуском убедитесь, что:
вы авторизованы в «Активном гражданине» (вошли в свой аккаунт);
в браузере нет блокировщиков, которые мешают работе скрипта.

  • Если макрос работает слишком быстро, добавьте pause в нужные места (например, pause | 500 вместо 200).
  • Если элементы не находятся, возможно, структура страницы изменилась — тогда нужно исправить XPath-выражения в командах waitForElementPresent, storeXpathCount, click.


Всем удачных самоделок и мирного неба над головой!