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

Pendolf

Client
Регистрация
25.11.2019
Сообщения
120
Благодарностей
87
Баллы
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
 

Вложения

Последнее редактирование модератором:

Redsmokky

Client
Регистрация
06.10.2015
Сообщения
314
Благодарностей
196
Баллы
43
Мощный шаблон :ay:
 
  • Спасибо
Реакции: Pendolf

usboff

Client
Регистрация
25.08.2021
Сообщения
92
Благодарностей
51
Баллы
18
Как только не извращаются, чтобы на ZennoDroid не переходить:ap:
По сабжу, круто!
 
  • Спасибо
Реакции: Pendolf

diamlan

Client
Регистрация
14.09.2019
Сообщения
113
Благодарностей
18
Баллы
18
Какая версия Python нужна? Не получается на последнюю установить библиотеки
 

Pendolf

Client
Регистрация
25.11.2019
Сообщения
120
Благодарностей
87
Баллы
28

Ruhas

Client
Регистрация
26.11.2019
Сообщения
673
Благодарностей
171
Баллы
43
Какой же противный голос в видео...
 

Pendolf

Client
Регистрация
25.11.2019
Сообщения
120
Благодарностей
87
Баллы
28

Ruhas

Client
Регистрация
26.11.2019
Сообщения
673
Благодарностей
171
Баллы
43

Pendolf

Client
Регистрация
25.11.2019
Сообщения
120
Благодарностей
87
Баллы
28

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