From 690472e799d289decf3fadf4900c10536c1e4020 Mon Sep 17 00:00:00 2001 From: Floke Date: Fri, 4 Jul 2025 04:52:13 +0000 Subject: [PATCH] dealfront_enrichment.py aktualisiert --- dealfront_enrichment.py | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index 301913bd..5638daf3 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -178,18 +178,29 @@ class DealfrontScraper: return False def load_search(self, search_name): - # (Diese Methode bleibt vorerst unverändert) + """Lädt eine vordefinierte Suche anhand ihres Namens.""" try: - logger.info(f"Suche und lade die vordefinierte Suche: '{search_name}'") - search_link_selector = (By.XPATH, f"//div[contains(@class, 'truncate') and normalize-space()='{search_name}']") + logger.info(f"Warte, bis die Liste der gespeicherten Suchen sichtbar ist...") + # Wir warten auf den Container, der alle Such-Items enthält. + # Ein guter Selektor ist das `ul`-Element mit der ID, die mit `eb-popup` beginnt. + # Oder allgemeiner: Ein Element, das den Text einer bekannten Suche enthält. + search_list_container_selector = (By.XPATH, f"//div[normalize-space()='{search_name}']") + self.wait.until(EC.visibility_of_element_located(search_list_container_selector)) + logger.info(f"Liste gefunden. Klicke jetzt auf die vordefinierte Suche: '{search_name}'") + + # Der XPath sucht nach einem Element (div, a, button), dessen Text exakt übereinstimmt. + search_link_selector = (By.XPATH, f"//*[normalize-space()='{search_name}']") search_link = self.wait.until(EC.element_to_be_clickable(search_link_selector)) search_link.click() - + + # Verifizieren, dass die Ergebnisse geladen sind, indem wir auf die Ergebnistabelle warten. results_table_header_selector = (By.XPATH, "//th[normalize-space()='Firma']") self.wait.until(EC.visibility_of_element_located(results_table_header_selector)) logger.info(f"Suche '{search_name}' erfolgreich geladen und Ergebnisse angezeigt.") - time.sleep(3) + + time.sleep(3) # Feste Wartezeit, damit alle Daten nachgeladen sind. return True + except Exception as e: logger.critical(f"Laden der Suche '{search_name}' fehlgeschlagen: {type(e).__name__}", exc_info=True) self._save_debug_artifacts()