Многопоточная автоматизация приложений в ZennoPoster с Python: Поиск по изображениям, запись действий, хоткеи, шпаргалки и всякие плюшки

Pendolf

Client
Регистрация
25.11.2019
Сообщения
120
Реакции
96
Баллы
28
Разработать систему многопоточной автоматизации управления приложениями с использованием ZennoPoster и Python. Основные задачи:

  • Управление действиями по координатам, найденным через поиск изображений или текста.
  • Оптимизация выполнения задач в многопоточном режиме.
  • Централизация логики выполнения действий и поддействий.

1. Управление действиями из таблицы setting
В основе работы системы лежит таблица setting, которая управляет процессом выполнения действий и обеспечивает гибкость настройки задач. Таблица является ключевым элементом, определяющим последовательность шагов, которые программа должна выполнить.

Логика работы с таблицей
Для каждого шага в таблице указываются:

  1. Основное действие (deistvie) — числовое значение, которое определяет тип действия, например, клик, ввод текста, прокрутка, поиск по картинке и т.д.
  2. Поддействие (pod_deistvie) — числовое значение, которое уточняет или детализирует основное действие, например, клик, удержание клавиши, вставка текста и т.д.
  3. Другие переменные — заполняются только те параметры, которые необходимы для выполнения конкретного действия (например, координаты клика, текст для поиска). Если заполнены переменные стороннего действия в текущем, они учитываться не будут.
Каждое действие из таблицы обрабатывается строго поочередно, начиная с первого. Управляющая логика настроена так, чтобы успешное завершение текущего шага автоматически переводило программу к следующему, обеспечивая плавное выполнение всех этапов. С последнего этапа к первому, когда действия выполнились.

Индивидуальный подход к каждому действию
В проекте предусмотрен механизм гибкой настройки действий:

  • Шпаргалки: Для каждого действия в таблице setting подготовлены подробные инструкции с описанием всех необходимых переменных. Шпаргалки включают примеры, чтобы упростить понимание и настройку. Например, для действия "клик" описано, как правильно задать координаты и параметры.
  • Сниппеты: Созданы готовые шаблоны установки значений, которые позволяют быстро и правильно добавить новое действие в таблицу. Они автоматически добавляют все нужные переменные и связывают их с соответствующим действием.


Переменные для заполнения
Заполняйте только те переменные, которые необходимы для выполнения текущего действия из Switch:
  • x_click, y_click — координаты точки на экране, где должен произойти клик. Используются для действий, связанных с нажатием мыши.
  • process_name — имя процесса или программы, с которой взаимодействует система. Например, это может быть имя активного окна или запущенного приложения.
  • text_file — путь к текстовому файлу, который требуется открыть, читать или записать.
  • x_start, y_start — начальные координаты области действия (например, начало выделения или рисования).
  • x_end, y_end — конечные координаты области действия.
  • static_width, static_height — фиксированная ширина и высота объекта или области, если они нужны для действия.
  • deistvie — основное действие, которое нужно выполнить (например, клик, ввод текста, прокрутка и тд. соответствующие заданному номеру).
  • pod_deistvie — уточнение действия (например, вставка текста, удержание кнопки и тд. соответствующие заданному номеру).
  • text_to_search — текст, который необходимо найти (после выполнения действий с скриншотами окон).
  • press_key — клавиша, которую нужно нажать (например, "Enter", "Ctrl").
  • key_down — клавиша, которую нужно удерживать.
  • key_press — последовательность нажатий клавиш (например, комбинация клавиш).
  • x_end_plus_position, y_end_plus_position — смещение конечных координат действия относительно начальной точки.
  • time_sleep — задержка перед выполнением действия, указанная в секундах.
  • PAUSE — пауза при переходе на новое действие.
  • x_scroll, y_scroll — координаты точки, где начинается прокрутка.
  • scroll_amount — величина прокрутки (например, число строк или пикселей).
  • window_name — имя окна, с которым необходимо взаимодействовать. Используется для поиска окна среди активных.
  • program_dir — путь к исполняемому файлу программы или директории, где она находится.
  • x_click, y_click — координаты точки на экране, где должен произойти клик. Используются для действий, связанных с нажатием мыши.
  • x_click_def, y_click_def — координаты точки по умолчанию для клика (заданные в настройках для стандартных действий, например, клика по определенной кнопке).
  • Если переменная setting заполнена, система выполняет поиск текста и действие (например, удаление). Если setting не заполнена, действие пропускается. Заполняется вариативно когда требуется.
Примеры для удобства
Для каждой переменной в шпаргалке есть примеры использования. Например:
  • Как задать координаты для клика мыши.
  • Как настроить текстовый поиск и его обработку.
  • Как правильно указать путь к файлу или процессу.
    Эти примеры помогут быстрее понять, как заполнять таблицу setting для выполнения различных действий.


Особенности реализации:

  1. Динамическое управление действиями:
    • Система извлекает данные из таблицы и обрабатывает их по указанным ключам.
    • Для каждого действия задаются параметры, необходимые для корректного выполнения.
  2. Использование SWITCH:
    • Основные действия и их поддействия разделены для удобства обработки.
    • Уникальные переменные deistvie и pod_deistvie используются для идентификации шагов.
2. Запись данных и логирование
Для каждой выполняемой операции система автоматически сохраняет результат в лог-файл.

  • Записываются текущие значения переменных deistvie и pod_deistvie.
  • Логи позволяют анализировать выполнение программы, выявлять ошибки и отслеживать прогресс.
Поддержка многопоточности
Многопоточность реализована через специальный подпроект с названием "Подпроект сборник кодов индивидуально под приложения, возможен многопоток только в свернутом виде". Этот подпроект содержит функции, обеспечивающие:

  • Стабильную работу в многопоточном режиме.
  • Централизованное управление логикой выполнения задач.
  • Единообразие и упрощение кода.
Каждый поток выполняет свои действия, основываясь на параметрах, переданных из таблицы setting.

Переменная для управления количеством потоков
Для управления количеством открываемых программ и потоков используется переменная по умолчанию how_long_to_Open. Она задает число приложений, которые запускаются и обрабатываются в рамках одного потока.

Пример настройки:

  • Если в переменной how_long_to_Open указано значение 5, то в каждом потоке будет открываться и управляться 5 приложений.
  • Переменная интегрируется в таблицу setting, где каждый поток получает свои параметры и действует в рамках заданной логики.
Преимущества подхода
  • Легкость масштабирования под разные задачи.
  • Четкое разграничение потоков для повышения стабильности.
  • Централизованное управление параметрами через таблицу setting, включая переменную how_long_to_Open.


4. Поиск по изображениям и тексту
Система поддерживает два основных метода взаимодействия с интерфейсом:

  1. Поиск по изображениям:
    • Используется для определения координат элементов интерфейса на основе шаблонов.
    • После определения координат выполняются действия: клики, перемещения и ввод данных.
  2. Поиск текста на экране:
    • Применяется OCR для извлечения текста и получения его координат.
    • Текстовые данные используются для дальнейших операций, таких как копирование, ввод или выделение.
5. Вариативность выполнения действий
Каждое действие в таблице может быть адаптировано для выполнения множества задач. Для этого система использует динамические параметры, которые позволяют изменять логику выполнения без необходимости переписывания основного кода.

Ключевые особенности:

  • Действия разделены на основные (deistvie) и уточняющие (pod_deistvie).
  • Возможность создавать вложенные шаги, обеспечивая большую гибкость выполнения.
6. Упрощение настройки через встроенные шпаргалки
Для каждого этапа автоматизации предусмотрены:

  • Инструкции по заполнению переменных.
  • Описание логики обработки данных.
  • Примеры заполнения таблицы setting и настройки параметров.
Шпаргалки интегрированы в проект для быстрого доступа, упрощая процесс обучения и настройки для новых пользователей.

Итог
Преимущества системы:

  1. Гибкость: Легкость добавления новых действий и их интеграции в проект.
  2. Эффективность: Оптимизированная многопоточность повышает скорость выполнения задач.
  3. Прозрачность: Логи и таблицы упрощают анализ выполнения и отладку программы.
  4. Удобство: Встроенные шпаргалки снижают порог входа и ускоряют настройку проекта.
Эта система подойдет для автоматизации сложных задач с интерфейсами, требующих многопоточного управления и работы с изображениями и текстами.

Определение частей по картинке: специфика выполнения
В проекте для работы с изображениями используется специфический метод, позволяющий вручную определить видимую область, которая затем применяется для автоматического поиска.

Механизм работы:
  1. Ручное выделение области:
    • Пользователю предлагается выделить интересующую часть изображения.
    • Область сохраняется, чтобы ее можно было использовать для дальнейшей обработки.
    • Выход из режима выделения осуществляется только двумя способами, так же есть сохранение:
      • Нажатием клавиши S для сохранения области, хотя вы можете просто её выделить, она сохранится в папке selected_area_images.
      • Нажатием ESC для выхода.
      • Выход стандартными методами на крестик попросту перезапустит код, вариативный выход закрытие исполняемого файла кода.
  2. Автоматический поиск:
    • После сохранения выделенной области система выполняет автоматический поиск по нарезанным фрагментам, сохраненным в папке.
    • Все фрагменты проверяются для достижения максимальной точности.
  3. Перепроверка результата:
    • После автоматического поиска проводится перепроверка по всем сохраненным нарезанным изображениям.
    • Это позволяет уточнить результат и убедиться в корректности найденных данных.
Преимущества метода:

  • Гибкость: Возможность ручного выбора области позволяет работать с нестандартными изображениями или сложными интерфейсами.
  • Точность: Автоматический поиск и перепроверка обеспечивают высокий уровень точности.
  • Универсальность: Метод применим для множества задач, от анализа интерфейсов до извлечения данных.
Проблема коллизий при работе с буфером обмена
В многопоточном программировании буфер обмена часто используется для передачи данных между приложениями или частями программы. Однако:

  • Общий доступ: Буфер обмена — это общий ресурс для всех потоков, что создает риск конфликта, когда несколько потоков одновременно пытаются его читать или записывать.
  • Потеря данных: Если один поток перезаписывает данные в буфере до того, как другой поток их обработает, это может привести к некорректным результатам.
Роль хоткеев
Использование хоткеев (горячих клавиш) в управлении действиями позволяет избежать прямой зависимости от буфера обмена и снижает вероятность коллизий.

  1. Изоляция потоков:
    • Каждый поток может использовать собственный набор хоткеев для выполнения действий. Это исключает ситуации, когда несколько потоков обращаются к одному и тому же ресурсу (буферу обмена).
  2. Контроль выполнения:
    • Хоткеи позволяют выполнять действия (например, ввод данных или вставку текста) напрямую, минуя промежуточное использование буфера.
    • Это обеспечивает большую надежность и предсказуемость при выполнении задач.
  3. Скорость работы:
    • С использованием горячих клавиш действия выполняются быстрее, так как они не требуют дополнительных операций с буфером.
  4. Простота реализации:
    • В архиве проекта уже предусмотрен код для создания хоткеев, а также два кода для их использования:
      • Один для вставки данных.
      • Другой для их ввода.
    • Эти решения легко интегрируются в систему и позволяют гибко настраивать хоткеи под конкретные задачи.
Практическое применение в многопоточности
  1. Настройка уникальных хоткеев:
    • Для каждого потока можно задать собственные комбинации горячих клавиш.
    • Это предотвращает конфликты при выполнении параллельных задач.
  2. Управление действиями через хоткеи:
    • Хоткеи используются для выполнения стандартных операций (ввод текста, копирование, вставка), заменяя собой обращение к буферу обмена.
  3. Гибкость работы:
    • Хоткеи интегрируются в логику обработки действий, управляемую переменными deistvie и pod_deistvie.
    • Вся логика настроена через таблицу setting, что делает систему адаптивной и удобной для масштабирования.
Итог
Использование горячих клавиш в многопоточной среде:

  • Исключает риски, связанные с использованием общего ресурса — буфера обмена.
  • Повышает надежность и скорость выполнения задач.
  • Упрощает реализацию и настройку автоматизации.
Интеграция хоткеев в проект значительно улучшает стабильность работы в многопоточной системе, что делает этот метод незаменимым для сложных задач автоматизации.

128311

128312
128468

128469

128470

128471

128472

 

Вложения

Последнее редактирование модератором:
Мощный шаблон :ay:
 
  • Спасибо
Реакции: Pendolf
Как только не извращаются, чтобы на ZennoDroid не переходить:ap:
По сабжу, круто!
 
  • Спасибо
Реакции: Pendolf
Какая версия Python нужна? Не получается на последнюю установить библиотеки
 
Запускается автоматизация шаблоном зеннопостера?
Если так, то почему все шаблоны называется подпроектами.
В моем понимании, подпроекты вызываются из главного шаблона
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)