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