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