From f39cda3ae040c51eb971c318bcae8a5d88b1bb93 Mon Sep 17 00:00:00 2001 From: Marius Mutu Date: Fri, 15 May 2026 12:59:07 +0300 Subject: [PATCH] fix(login): inlocuieste networkidle cu domcontentloaded + wait selector MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pagina go.bancatransilvania.ro are tracking activ (Google Analytics, LinkedIn, Facebook, omniconvert) care face request-uri continue 30+ sec dupa load. wait_until='networkidle' nu se atinge niciodata si page.goto face timeout dupa 30s. Foloseste 'domcontentloaded' si asteapta explicit link-ul Login. Elimin si fallback-ul mort cu networkidle din login() popup (15s wait inutil dupa input#user — daca selectorul lipseste, networkidle nici el nu vine). Co-Authored-By: Claude Opus 4.7 (1M context) --- btgo_scraper.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/btgo_scraper.py b/btgo_scraper.py index 618f0d2..0da0617 100644 --- a/btgo_scraper.py +++ b/btgo_scraper.py @@ -451,7 +451,11 @@ class BTGoScraper: """Autentificare cu username si password""" self._update_progress("Deschid pagina de login...") logging.info("Navigare catre https://go.bancatransilvania.ro/") - self.page.goto('https://go.bancatransilvania.ro/', wait_until='networkidle') + # 'networkidle' nu se atinge niciodata: pagina face polling continuu pe + # Google Analytics / LinkedIn / Facebook pixels. Folosim 'domcontentloaded' + # si asteptam apoi explicit link-ul Login. + self.page.goto('https://go.bancatransilvania.ro/', wait_until='domcontentloaded', timeout=30000) + self.page.wait_for_selector("a:has-text('Login')", timeout=15000, state="visible") logging.info("Pagina incarcata") try: @@ -483,12 +487,8 @@ class BTGoScraper: # Asteapta ca Angular SPA sa randeze formularul de login # (goapp.bancatransilvania.ro face un API call inainte de render) logging.info("Astept incarcarea formularului de login...") - try: - self.login_page.wait_for_selector("input#user", timeout=15000) - logging.info("[OK] Formular login incarcat") - except Exception: - logging.warning(" [WARN] Timeout pe input#user, incerc wait_for_load_state...") - self.login_page.wait_for_load_state("networkidle", timeout=15000) + self.login_page.wait_for_selector("input#user", timeout=20000, state="visible") + logging.info("[OK] Formular login incarcat") # Verifica GDPR cookies si pe popup self._dismiss_gdpr_cookies(self.login_page)