1
0
forked from BRT/arc

Improve button loading and error handling in PayByCardScript:

- Add checks for the "По номеру карты" button on the payments screen.
- Refine error messages to distinguish missing button vs. incomplete screen load.
This commit is contained in:
trnsmkot 2026-04-23 21:13:31 +07:00
parent 78fb0ab64c
commit ecb9b7c9a2

View File

@ -169,34 +169,33 @@ void PayByCardScript::makePayment(
AdbUtils::makeTap(deviceId, transferBtn.x(), transferBtn.y());
QThread::msleep(2000);
// 2. Ждём экран "Платежи и переводы"
// 2. Ждём экран "Платежи и переводы" И прогрузки кнопки "По номеру карты"
Node cardBtn;
bool paymentsPageLoaded = false;
bool titleSeen = false;
for (int attempt = 0; attempt < 10; ++attempt) {
if (!checkApp()) return;
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
Node title = xmlScreenParser.findTextNode("Платежи и переводы");
if (!title.isEmpty()) {
if (!title.isEmpty()) titleSeen = true;
cardBtn = xmlScreenParser.findButtonNode("По номеру карты", false);
if (!title.isEmpty() && !cardBtn.isEmpty()) {
paymentsPageLoaded = true;
break;
}
qDebug() << "[PayByCard] Waiting for 'Платежи и переводы', attempt" << attempt + 1 << "/ 10";
qDebug() << "[PayByCard] Waiting for 'Платежи и переводы' + 'По номеру карты', attempt" << attempt + 1 << "/ 10";
QThread::msleep(1500);
}
if (!paymentsPageLoaded) {
m_error = "Экран 'Платежи и переводы' не загрузился";
m_error = titleSeen
? "Кнопка 'По номеру карты' не найдена на экране платежей"
: "Экран 'Платежи и переводы' не загрузился";
qWarning() << "[PayByCard]" << m_error;
return;
}
// 3. Нажимаем "По номеру карты" в секции "ДРУГИЕ СПОСОБЫ"
Node cardBtn = xmlScreenParser.findButtonNode("По номеру карты", false);
if (cardBtn.isEmpty()) {
m_error = "Кнопка 'По номеру карты' не найдена на экране платежей";
qWarning() << "[PayByCard]" << m_error;
return;
}
qDebug() << "[PayByCard] Tapping 'По номеру карты'...";
AdbUtils::makeTap(deviceId, cardBtn.x(), cardBtn.y());
QThread::msleep(2000);