1
0
forked from BRT/arc

Handle closing of ad bottom sheets in CommonScript:

- Add detection and dismissal logic for ad banners on the homepage.
- Introduce retry mechanism with back button fallback for persistent ads.
This commit is contained in:
slava 2026-04-27 21:45:53 +07:00
parent f7a187ec88
commit d37acd5347

View File

@ -210,6 +210,21 @@ bool CommonScript::tryToCloseAllBannersOnHomePage(const QString &deviceId, const
AdbUtils::makeTap(deviceId, gpNode.x(), gpNode.y()); AdbUtils::makeTap(deviceId, gpNode.x(), gpNode.y());
QThread::msleep(1500); QThread::msleep(1500);
closedThis = true; closedThis = true;
} else if (Node adNode = xmlScreenParser.tryToFindAdBanner(); !adNode.isEmpty()) {
// Рекламный bottom sheet (ипотека, бесплатная карта, "Копите звёзды" и т.п.)
qDebug() << "[tryToCloseAllBannersOnHomePage] Ad bottom sheet detected, closing...";
AdbUtils::makeTap(deviceId, adNode.x(), adNode.y());
QThread::msleep(1000);
// Если touch_outside не помог — жмём назад
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
if (Node stillAd = xmlScreenParser.tryToFindAdBanner(); !stillAd.isEmpty()) {
qDebug() << "[tryToCloseAllBannersOnHomePage] Ad still visible, pressing back...";
AdbUtils::goBack(deviceId);
QThread::msleep(1000);
}
closedAny = true;
xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(deviceId, ++m_counter));
continue;
} else if (Node closeBannerOrDialogNode = xmlScreenParser.tryToFindBannerOrDialog(width, height); } else if (Node closeBannerOrDialogNode = xmlScreenParser.tryToFindBannerOrDialog(width, height);
closeBannerOrDialogNode.x() != -1 && closeBannerOrDialogNode.y() != -1) { closeBannerOrDialogNode.x() != -1 && closeBannerOrDialogNode.y() != -1) {
AdbUtils::makeTap(deviceId, closeBannerOrDialogNode.x(), closeBannerOrDialogNode.y()); AdbUtils::makeTap(deviceId, closeBannerOrDialogNode.x(), closeBannerOrDialogNode.y());