// // Created by Misterio on 24.04.2025. // #ifndef SCRIPT_H #define SCRIPT_H #include #include #include "AdbUtils.h" #include "XmlParser.h" #include "auto_payment/UiElement.h" #include #include class Script final : public QObject { Q_OBJECT public: explicit Script(QObject *parent = nullptr); ~Script() override; public slots: void start(); // Старт фоновой работы void stop(); // Стоп фоновой работы signals: void finished(); // Сигнал о завершении работы private: bool m_running = true; // // Функция для запуска скрипта с передачей параметров // void runScript(const QString &pin, const QString &last4digits); // // // Функции для определения различных экранов и действий // // // Проверка, что перед нами экран логина // bool isLoginScreen(const QList &ui); // // // Проверка, что перед нами экран ввода ПИН // bool isPinScreen(const QList &ui); // // // Получение списка кнопок с цифрами для ввода ПИН // std::vector getPinButtons(const QList &ui); // // // Тап по элементу с текстом // void tapByText(const QList &ui, const QString &text); // // // Тап по полю ввода // void tapInputField(const QList &ui, const QString &fieldText); // // // Тап по кнопке "Далее" и её вариациям // void tapNextButton(const QList &ui); // // // Обработка экрана с пост-логин баннерами или диалогами // bool handlePostLoginScreen(const QList &ui); // // // Проверка, что перед нами главный экран // bool isMainScreen(const QList &ui); // // // Тап по главному экрану // void tapMainScreen(const QList &ui); // // // Функция для поиска карты по последним 4 цифрам // UiElement findCardByLast4Digits(const QList &ui, const QString &last4digits); // // // Поиск кнопки "Оплатить" на экране // UiElement findPayButton(const QList &ui); private: enum class State { HandlingSecurityBanner, WaitingForPinInput, ClosingBanner, OnMainScreen, SearchingCard, OnCardDetails, OnTransferScreen, Idle }; // Основной цикл скрипта void processUiLoop(); // void handleState(const QList &elements); static void handleSecurityBanner(const QList& elements); static void inputPinCode(const QString &pinCode); void handleClosingBanner(const QList &elements); static void swipeToFindElement(const QString &searchText); static void handleCardDetailsScreen(const QList &elements); // void handleTransferScreen(const QList &elements); static void inputAmount(const QString &amount); // Утилиты для работы с ADB AdbUtils adbUtils; // Парсер XML UI дампов мобильного устройства XmlParser xmlParser; // Текущее состояние скрипта автоматизации State currentState = State::Idle; }; #endif //SCRIPT_H