Enhance input field detection and retry logic across payment scripts:
- Add retry loops for input fields in `PayByPhoneScript` and `PayByCardScript` to improve reliability. - Update window title in `MainWindow` with version info from `config.ini`.
This commit is contained in:
parent
8c2be04787
commit
d480cc51b0
@ -230,8 +230,14 @@ void PayByCardScript::makePayment(
|
||||
QThread::msleep(1000);
|
||||
|
||||
// 6. Вводим сумму в поле "Сумма" (hint содержит "Сумма")
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
Node sumEditText = xmlScreenParser.findEditTextByHint(QString::fromUtf8("Сумма"));
|
||||
Node sumEditText;
|
||||
for (int attempt = 0; attempt < 10; ++attempt) {
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
sumEditText = xmlScreenParser.findEditTextByHint(QString::fromUtf8("Сумма"));
|
||||
if (!sumEditText.isEmpty()) break;
|
||||
qDebug() << "[Dushanbe::PayByCard] Waiting for sum input, attempt" << attempt + 1 << "/ 10";
|
||||
QThread::msleep(1500);
|
||||
}
|
||||
if (sumEditText.isEmpty()) {
|
||||
m_error = "Sum input field not found";
|
||||
qWarning() << "[Dushanbe::PayByCard]" << m_error;
|
||||
|
||||
@ -231,8 +231,14 @@ void PayByPhoneScript::makePayment(
|
||||
QThread::msleep(1000);
|
||||
|
||||
// 6. Вводим сумму в поле "Сумма"
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
Node sumEditText = xmlScreenParser.findEditTextByHint(QString::fromUtf8("Сумма"));
|
||||
Node sumEditText;
|
||||
for (int attempt = 0; attempt < 10; ++attempt) {
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
sumEditText = xmlScreenParser.findEditTextByHint(QString::fromUtf8("Сумма"));
|
||||
if (!sumEditText.isEmpty()) break;
|
||||
qDebug() << "[Dushanbe::PayByPhone] Waiting for sum input, attempt" << attempt + 1 << "/ 10";
|
||||
QThread::msleep(1500);
|
||||
}
|
||||
if (sumEditText.isEmpty()) {
|
||||
m_error = "Sum input field not found";
|
||||
qWarning() << "[Dushanbe::PayByPhone]" << m_error;
|
||||
|
||||
@ -223,7 +223,16 @@ void PayByCardScript::makePayment(
|
||||
qDebug() << "[PayByCard] Card payment screen loaded successfully";
|
||||
|
||||
// 5. Вводим номер карты в поле "Номер карты получателя"
|
||||
Node cardInput = xmlScreenParser.findEditTextByHint("Номер карты получателя");
|
||||
Node cardInput;
|
||||
for (int attempt = 0; attempt < 10; ++attempt) {
|
||||
if (!checkApp()) return;
|
||||
cardInput = xmlScreenParser.findEditTextByHint("Номер карты получателя");
|
||||
if (!cardInput.isEmpty()) break;
|
||||
qDebug() << "[PayByCard] Waiting for 'Номер карты получателя' input, attempt" << attempt + 1 << "/ 10";
|
||||
QThread::msleep(1500);
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
}
|
||||
|
||||
if (cardInput.isEmpty()) {
|
||||
m_error = "Поле 'Номер карты получателя' не найдено";
|
||||
qWarning() << "[PayByCard]" << m_error;
|
||||
@ -236,9 +245,16 @@ void PayByCardScript::makePayment(
|
||||
QThread::msleep(2000);
|
||||
|
||||
// 6. Ждём распознавания карты и вводим сумму
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
Node sumInput;
|
||||
for (int attempt = 0; attempt < 10; ++attempt) {
|
||||
if (!checkApp()) return;
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
sumInput = xmlScreenParser.findEditTextByHint("Сумма от");
|
||||
if (!sumInput.isEmpty()) break;
|
||||
qDebug() << "[PayByCard] Waiting for 'Сумма от' input, attempt" << attempt + 1 << "/ 10";
|
||||
QThread::msleep(1500);
|
||||
}
|
||||
|
||||
Node sumInput = xmlScreenParser.findEditTextByHint("Сумма от");
|
||||
if (sumInput.isEmpty()) {
|
||||
m_error = "Поле ввода суммы не найдено";
|
||||
qWarning() << "[PayByCard]" << m_error;
|
||||
|
||||
@ -367,7 +367,15 @@ void PayByPhoneScript::makePayment(
|
||||
}
|
||||
|
||||
// 7. Вводим сумму
|
||||
Node sumInput = xmlScreenParser.findFirstEditText();
|
||||
Node sumInput;
|
||||
for (int attempt = 0; attempt < 10; ++attempt) {
|
||||
if (!checkApp()) return;
|
||||
sumInput = xmlScreenParser.findFirstEditText();
|
||||
if (!sumInput.isEmpty()) break;
|
||||
qDebug() << "[PayByPhone] Waiting for sum input field, attempt" << attempt + 1 << "/ 10";
|
||||
QThread::msleep(1500);
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
}
|
||||
if (sumInput.isEmpty()) {
|
||||
m_error = "Поле ввода суммы не найдено";
|
||||
qWarning() << "[PayByPhone]" << m_error;
|
||||
@ -412,7 +420,15 @@ void PayByPhoneScript::makePayment(
|
||||
}
|
||||
|
||||
// 8. Нажимаем "Перевести ..." (ищем по первому слову)
|
||||
Node transferConfirmBtn = xmlScreenParser.findButtonNode("Перевести", true);
|
||||
Node transferConfirmBtn;
|
||||
for (int attempt = 0; attempt < 10; ++attempt) {
|
||||
if (!checkApp()) return;
|
||||
transferConfirmBtn = xmlScreenParser.findButtonNode("Перевести", true);
|
||||
if (!transferConfirmBtn.isEmpty()) break;
|
||||
qDebug() << "[PayByPhone] Waiting for 'Перевести ...' button, attempt" << attempt + 1 << "/ 10";
|
||||
QThread::msleep(1500);
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
}
|
||||
if (transferConfirmBtn.isEmpty()) {
|
||||
m_error = "Кнопка 'Перевести ...' не найдена на экране подтверждения";
|
||||
qWarning() << "[PayByPhone]" << m_error;
|
||||
|
||||
@ -26,10 +26,13 @@
|
||||
#include "dao/SettingsDAO.h"
|
||||
#include <QTimer>
|
||||
#include <QCoreApplication>
|
||||
#include <QSettings>
|
||||
#include "widget/common/FlowLayout.h"
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) {
|
||||
setWindowTitle("ARC");
|
||||
const QSettings settings("config.ini", QSettings::IniFormat);
|
||||
const QString version = settings.value("common/version").toString();
|
||||
setWindowTitle(version.isEmpty() ? "ARC" : QString("ARC v%1").arg(version));
|
||||
|
||||
// Инициализируем таймер обновления
|
||||
timer = new QTimer(this);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user