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
a4f0ebe75a
commit
9d0593a89d
@ -272,6 +272,11 @@ void PayByCardScript::makePayment(
|
||||
|
||||
qDebug() << "[PayByCard] Card number and amount entered";
|
||||
|
||||
// Закрываем системную софт-клавиатуру — иначе она перекрывает кнопку "Перевести"
|
||||
// внизу экрана (bounds схлопываются до нулевой высоты).
|
||||
AdbUtils::hideKeyboard(deviceId);
|
||||
QThread::msleep(800);
|
||||
|
||||
// 7. Ждём расчёта комиссии (текст после "Комиссия" перестаёт быть "Рассчитаем...")
|
||||
double fee = 0;
|
||||
bool feeCalculated = false;
|
||||
@ -312,10 +317,20 @@ void PayByCardScript::makePayment(
|
||||
}
|
||||
|
||||
// 8. Нажимаем "Перевести" (или "Перевести X ₽")
|
||||
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
|
||||
Node transferBtn2 = xmlScreenParser.findButtonNode("Перевести", true);
|
||||
if (transferBtn2.isEmpty()) {
|
||||
m_error = "Кнопка 'Перевести' не найдена на экране ввода суммы";
|
||||
// Ретраим, пока bounds кнопки не будут ненулевыми — клавиатура могла всплыть
|
||||
// заново (напр. если расчёт комиссии сфокусировал поле суммы).
|
||||
Node transferBtn2;
|
||||
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;
|
||||
return;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user