1
0
forked from BRT/arc

Improve "Продолжить" button handling in PayByPhoneScript:

- Add keyboard dismissal and retry logic to ensure button visibility and tappability.
This commit is contained in:
trnsmkot 2026-04-24 22:07:34 +07:00
parent 611ee9926a
commit a4f0ebe75a

View File

@ -396,11 +396,24 @@ void PayByPhoneScript::makePayment(
AdbUtils::inputText(deviceId, QString::number(static_cast<int>(m_amount)));
QThread::msleep(1000);
// 6. Нажимаем "Продолжить"
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
Node continueBtn = xmlScreenParser.findButtonNode("Продолжить", false);
if (continueBtn.isEmpty()) {
m_error = "Кнопка 'Продолжить' не найдена";
// Закрываем системную софт-клавиатуру, иначе она перекрывает "Продолжить"
// (кнопка уезжает за нижнюю границу web_view_holder и имеет нулевую высоту).
AdbUtils::hideKeyboard(deviceId);
QThread::msleep(800);
// 6. Нажимаем "Продолжить" (ретраим, пока bounds перестанут быть нулевыми)
Node continueBtn;
for (int attempt = 0; attempt < 5; ++attempt) {
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
continueBtn = xmlScreenParser.findButtonNode("Продолжить", false);
if (!continueBtn.isEmpty() && continueBtn.height() > 0) break;
qDebug() << "[PayByPhone] Waiting for tappable 'Продолжить', attempt" << attempt + 1 << "/ 5"
<< "(bounds collapsed — клавиатура ещё видна?)";
AdbUtils::hideKeyboard(deviceId);
QThread::msleep(1000);
}
if (continueBtn.isEmpty() || continueBtn.height() == 0) {
m_error = "Кнопка 'Продолжить' не найдена или перекрыта клавиатурой";
qWarning() << "[PayByPhone]" << m_error;
return;
}