diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index 080ed16c..25d18f29 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -232,45 +232,54 @@ class DealfrontScraper: self.driver.quit() if __name__ == "__main__": - logger.info("Starte Dealfront Automatisierung - Phase 2a: Suche und Extraktion") + logger.info("Starte Dealfront Automatisierung - MAXIMALER DEBUG-MODUS") scraper = None try: scraper = DealfrontScraper() - if scraper.driver: - # Schritt 1: Login - if not scraper.login(): - raise Exception("Login fehlgeschlagen.") - - logger.info("Login erfolgreich. Pausiere kurz vor der Navigation.") - time.sleep(3) + if not scraper.driver: + raise Exception("WebDriver konnte nicht initialisiert werden.") - # Schritt 2: Navigation - if not scraper.navigate_to_target(): - raise Exception("Navigation zur Target-Seite fehlgeschlagen.") + # --- SCHRITT 1: LOGIN --- + if not scraper.login(): + raise Exception("Login fehlgeschlagen.") + logger.info(f"Login erfolgreich abgeschlossen. Aktuelle URL: {scraper.driver.current_url}") + logger.info("Warte 5 Sekunden, um den Dashboard-Zustand zu stabilisieren...") + time.sleep(5) - # Schritt 3: Suche laden - if not scraper.load_search(Config.TARGET_SEARCH_NAME): - raise Exception(f"Laden der Suche '{Config.TARGET_SEARCH_NAME}' fehlgeschlagen.") - - # Schritt 4: Ergebnisse extrahieren - companies = scraper.extract_current_page_results() + # --- SCHRITT 2: NAVIGATION ZUR TARGET URL --- + logger.info(f"Versuche jetzt, zur Target-URL zu navigieren: {Config.DEALFRONT_TARGET_URL}") + scraper.driver.get(Config.DEALFRONT_TARGET_URL) + logger.info("Navigationsbefehl zur Target-URL wurde gesendet.") + logger.info("Warte 5 Sekunden, damit die Navigation wirken kann...") + time.sleep(5) + + logger.info(f"URL nach Navigationsversuch: {scraper.driver.current_url}") + logger.info("Speichere Debug-Artefakte NACH dem Navigationsversuch...") + scraper._save_debug_artifacts() # Wir erzwingen hier einen Dump, um den Zustand zu sehen - if companies: - logger.info("===== Extrahierte Firmen (erste Seite) =====") - for company in companies: - logger.info(f" - Name: {company['name']}, Webseite: {company['website']}") - logger.info("===========================================") - else: - logger.warning("Keine Firmen auf der ersten Seite extrahiert.") + # --- SCHRITT 3: VERIFIZIERUNG VERSUCHEN --- + logger.info("Versuche jetzt, die Target-Seite zu verifizieren...") + + # Warten, bis die URL sich tatsächlich ändert. + url_part_to_wait_for = "/t/prospector/" + logger.info(f"Warte explizit, bis die URL '{url_part_to_wait_for}' enthält...") + scraper.wait.until(EC.url_contains(url_part_to_wait_for)) + logger.info(f"URL-Wechsel bestätigt! Aktuelle URL: {scraper.driver.current_url}") - logger.info("Phase 2a Test erfolgreich abgeschlossen. Warte vor dem Schließen...") - time.sleep(10) + # Warten auf sichtbares Element auf der neuen Seite. + verification_selector = (By.XPATH, "//button[normalize-space()='+ Neue Suche']") + logger.info(f"Warte auf Sichtbarkeit des Verifizierungs-Elements: {verification_selector}") + scraper.wait.until(EC.visibility_of_element_located(verification_selector)) + logger.info("Verifizierung der Target-Seite ERFOLGREICH!") except Exception as e: - logger.critical(f"Ein kritischer Fehler ist im Hauptprozess aufgetreten: {e}", exc_info=False) + logger.critical(f"Ein kritischer Fehler ist im Hauptprozess aufgetreten: {type(e).__name__} - {e}", exc_info=True) + # Der Screenshot wird schon in der Methode oder im try-Block gespeichert. finally: if scraper: + logger.info("Warte 10 Sekunden vor dem Schließen des Browsers...") + time.sleep(10) scraper.close() - logger.info("Dealfront Automatisierung beendet.") \ No newline at end of file + logger.info("Dealfront Debugging-Lauf beendet.") \ No newline at end of file