diff --git a/android/ozon/GetLastTransactionsScript.cpp b/android/ozon/GetLastTransactionsScript.cpp index 5880ff3..bca8662 100644 --- a/android/ozon/GetLastTransactionsScript.cpp +++ b/android/ozon/GetLastTransactionsScript.cpp @@ -225,6 +225,7 @@ bool GetLastTransactionsScript::navigateToTransactionList(const DeviceInfo &devi for (int attempt = 0; attempt < 10; ++attempt) { if (QThread::currentThread()->isInterruptionRequested()) return false; xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter)); + closeGooglePlayBannerIfVisible(m_deviceId, device.screenWidth, device.screenHeight); if (xmlScreenParser.isTransactionListScreen()) return true; QThread::msleep(1500); } @@ -864,6 +865,7 @@ void GetLastTransactionsScript::scanRecentTransactions(const DeviceInfo &device, for (int attempt = 0; attempt < 5; ++attempt) { xmlScreenParser.parseAndSaveXml(AdbUtils::getScreenDumpAsXml(m_deviceId, ++m_counter)); + closeGooglePlayBannerIfVisible(m_deviceId, device.screenWidth, device.screenHeight); if (xmlScreenParser.isTransactionListScreen()) break; QThread::msleep(1000); } diff --git a/tests/mock_server/gen_fetch_transactions.py b/tests/mock_server/gen_fetch_transactions.py index 16825dd..81ef04f 100755 --- a/tests/mock_server/gen_fetch_transactions.py +++ b/tests/mock_server/gen_fetch_transactions.py @@ -126,9 +126,13 @@ def get_foreground_package(serial) -> str | None: def dump_xml(serial) -> str: - adb(serial, "shell", "uiautomator", "dump", "/sdcard/_gen_ft.xml") - r = adb(serial, "exec-out", "cat", "/sdcard/_gen_ft.xml") - return r.stdout.decode("utf-8", errors="replace") + try: + adb(serial, "shell", "uiautomator", "dump", "/sdcard/_gen_ft.xml") + r = adb(serial, "exec-out", "cat", "/sdcard/_gen_ft.xml") + return r.stdout.decode("utf-8", errors="replace") + except subprocess.CalledProcessError as e: + print(f" WARNING: dump_xml failed: {e}") + return "" def get_device_tz(serial) -> timezone: @@ -334,6 +338,17 @@ def collect_tasks(serial, bank, mid, device_tz, kopecks, prefix): tasks = [] seen = set() + try: + return _collect_tasks_inner(serial, bank, mid, device_tz, kopecks, prefix, + xml, is_ozon, is_dush, tasks, seen) + except (subprocess.CalledProcessError, OSError) as e: + print(f"\n ERROR: ADB/device failure: {e}") + print(f" Saving {len(tasks)} tasks collected before crash") + return tasks + + +def _collect_tasks_inner(serial, bank, mid, device_tz, kopecks, prefix, + xml, is_ozon, is_dush, tasks, seen): if is_ozon: print("Detected: Ozon") headers = parse_ozon_date_headers(xml, device_tz)