diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index adb21771..007fc6ed 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -86,7 +86,8 @@ class DealfrontScraper: def login_and_navigate_to_target(self): """ - Führt Login durch und navigiert direkt zur Target-URL. + Führt den Login durch und navigiert zur Target-Seite via Klick auf den "Quick Link". + Dieser Ansatz ist maximal robust. """ if not self.driver: return False username, password = self._load_credentials() @@ -102,17 +103,22 @@ class DealfrontScraper: self.driver.find_element(By.XPATH, "//button[normalize-space()='Log in']").click() logger.info("Login-Befehl gesendet.") - # SCHRITT 2: DIREKTE NAVIGATION (robuster als auf Dashboard zu warten) - # Eine kurze, feste Pause nach dem Klick, bevor wir die URL wechseln. - time.sleep(3) - logger.info(f"Navigiere direkt zur Target-URL: {Config.DEALFRONT_TARGET_URL}") - self.driver.get(Config.DEALFRONT_TARGET_URL) - + # SCHRITT 2: NAVIGATION VIA QUICK-LINK-KACHEL + logger.info("Warte auf Dashboard und 'Prospects finden'-Link in den Quick Links.") + + # Dieser XPath zielt auf den Link in der "Quick links"-Kachel + prospects_link_selector = (By.XPATH, "//a[contains(@href, '/t/prospector/companies')]") + prospects_link = self.wait.until(EC.element_to_be_clickable(prospects_link_selector)) + logger.info("'Prospects finden'-Link gefunden. Klicke darauf...") + prospects_link.click() + # SCHRITT 3: NAVIGATION VERIFIZIEREN - verification_selector = (By.XPATH, "//button[normalize-space()='+ Neue Suche']") - self.wait.until(EC.visibility_of_element_located(verification_selector)) - logger.info("'Target'-Seite erfolgreich geladen.") + verification_target_selector = (By.XPATH, "//button[normalize-space()='+ Neue Suche']") + self.wait.until(EC.visibility_of_element_located(verification_target_selector)) + + logger.info("'Target'-Seite erfolgreich und vollständig geladen.") return True + except Exception as e: logger.critical(f"Login- oder Navigationsprozess fehlgeschlagen: {type(e).__name__}", exc_info=True) self._save_debug_artifacts()