Improve "Перевести" button handling in PayByCardScript:
- Add keyboard dismissal and retry logic to ensure button visibility and tappability. - Update error messages to differentiate between missing or obstructed button scenarios.
This commit is contained in:
parent
af47dc5888
commit
a92610f9e5
@ -272,6 +272,11 @@ void PayByCardScript::makePayment(
|
|||||||
|
|
||||||
qDebug() << "[PayByCard] Card number and amount entered";
|
qDebug() << "[PayByCard] Card number and amount entered";
|
||||||
|
|
||||||
|
// Закрываем системную софт-клавиатуру — иначе она перекрывает кнопку "Перевести"
|
||||||
|
// внизу экрана (bounds схлопываются до нулевой высоты).
|
||||||
|
AdbUtils::hideKeyboard(deviceId);
|
||||||
|
QThread::msleep(800);
|
||||||
|
|
||||||
// 7. Ждём расчёта комиссии (текст после "Комиссия" перестаёт быть "Рассчитаем...")
|
// 7. Ждём расчёта комиссии (текст после "Комиссия" перестаёт быть "Рассчитаем...")
|
||||||
double fee = 0;
|
double fee = 0;
|
||||||
bool feeCalculated = false;
|
bool feeCalculated = false;
|
||||||
@ -312,10 +317,20 @@ void PayByCardScript::makePayment(
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 8. Нажимаем "Перевести" (или "Перевести X ₽")
|
// 8. Нажимаем "Перевести" (или "Перевести X ₽")
|
||||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
// Ретраим, пока bounds кнопки не будут ненулевыми — клавиатура могла всплыть
|
||||||
Node transferBtn2 = xmlScreenParser.findButtonNode("Перевести", true);
|
// заново (напр. если расчёт комиссии сфокусировал поле суммы).
|
||||||
if (transferBtn2.isEmpty()) {
|
Node transferBtn2;
|
||||||
m_error = "Кнопка 'Перевести' не найдена на экране ввода суммы";
|
for (int attempt = 0; attempt < 5; ++attempt) {
|
||||||
|
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||||
|
transferBtn2 = xmlScreenParser.findButtonNode("Перевести", true);
|
||||||
|
if (!transferBtn2.isEmpty() && transferBtn2.height() > 0) break;
|
||||||
|
qDebug() << "[PayByCard] Waiting for tappable 'Перевести', attempt" << attempt + 1 << "/ 5"
|
||||||
|
<< "(bounds collapsed — клавиатура ещё видна?)";
|
||||||
|
AdbUtils::hideKeyboard(deviceId);
|
||||||
|
QThread::msleep(1000);
|
||||||
|
}
|
||||||
|
if (transferBtn2.isEmpty() || transferBtn2.height() == 0) {
|
||||||
|
m_error = "Кнопка 'Перевести' не найдена или перекрыта клавиатурой";
|
||||||
qWarning() << "[PayByCard]" << m_error;
|
qWarning() << "[PayByCard]" << m_error;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user