From de294fb3f794f1e104ab53796edd40dde2cc53a3 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Fri, 15 May 2026 15:26:02 +0300 Subject: [PATCH] fix(login): asteapta generos splash-ul SPA + reincarca popup la nevoie Pe masina prod (Session 0, randare software) aplicatia Angular de la goapp.bancatransilvania.ro ramane lenta pe splash-ul "Aplicatia ta de banking business" si uneori depaseste 20s -> input#user nu apare. Diagnostic confirmat: URL/titlu corecte, body gol, zero input-uri. Asteptam load state, apoi input#user cu timeout 60s; daca tot nu apare, reincarcam popup-ul o data si mai incercam. Worst case ~3 min, sub timeout-ul de 2FA. Co-Authored-By: Claude Opus 4.7 --- btgo_scraper.py | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/btgo_scraper.py b/btgo_scraper.py index 0c410bd..8b72777 100644 --- a/btgo_scraper.py +++ b/btgo_scraper.py @@ -503,10 +503,35 @@ class BTGoScraper: self.login_page = popup_info.value logging.info("Popup/tab login deschis") - # Asteapta ca Angular SPA sa randeze formularul de login - # (goapp.bancatransilvania.ro face un API call inainte de render) + # Asteapta ca Angular SPA sa randeze formularul de login. + # goapp.bancatransilvania.ro afiseaza intai un splash ("Aplicatia ta + # de banking business") cat se bootstrap-eaza Angular-ul. Pe masina + # prod (Session 0, randare software) bootstrap-ul e lent si uneori + # depaseste timeout-ul -> asteptam generos si reincarcam la nevoie. logging.info("Astept incarcarea formularului de login...") - self.login_page.wait_for_selector("input#user", timeout=20000, state="visible") + form_loaded = False + for attempt in range(1, 3): # 2 incercari + try: + self.login_page.wait_for_load_state("load", timeout=30000) + except PlaywrightTimeout: + pass + try: + self.login_page.wait_for_selector( + "input#user", timeout=60000, state="visible" + ) + form_loaded = True + break + except PlaywrightTimeout: + if attempt == 1: + logging.warning( + " [WARN] Formularul nu a aparut in 60s " + "(SPA blocat pe splash) - reincarc popup-ul..." + ) + self.login_page.reload(wait_until="domcontentloaded") + else: + raise + if not form_loaded: + raise PlaywrightTimeout("input#user nu a aparut nici dupa reload") logging.info("[OK] Formular login incarcat") # Verifica GDPR cookies si pe popup