Improve "Продолжить" button handling in PayByPhoneScript:
- Add keyboard dismissal and retry logic to ensure button visibility and tappability.
This commit is contained in:
parent
f5be380292
commit
af47dc5888
@ -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;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user