dealfront_enrichment.py aktualisiert

This commit is contained in:
2025-07-03 09:13:40 +00:00
parent 851fbc7ab1
commit 7e9ef3034c

View File

@@ -134,20 +134,66 @@ class DealfrontScraper:
self._save_debug_artifacts()
return False
def navigate_to_target_list(self, list_name: str):
"""
Navigiert nach dem Login zu einer spezifischen Zielliste im Target-Modul.
:param list_name: Der exakte Name der Zielliste, die angeklickt werden soll.
"""
try:
# --- SCHRITT 1: Zum Target-Modul navigieren ---
# Wir verwenden die Basis-URL, da die spezifische URL Session-IDs enthalten könnte.
target_url = "https://app.dealfront.com/t"
logger.info(f"Navigiere zum Target-Modul: {target_url}")
self.driver.get(target_url)
# --- SCHRITT 2: Auf die Liste in der Seitenleiste warten und klicken ---
# Wir suchen nach einem Link, dessen Text genau mit dem Listennamen übereinstimmt.
# Dieser XPath ist sehr spezifisch und robust.
list_selector = (By.XPATH, f"//div[contains(@class, 'list-group-item')]//a[normalize-space()='{list_name}']")
logger.debug(f"Warte darauf, dass die Zielliste '{list_name}' klickbar ist.")
target_list_element = self.wait.until(EC.element_to_be_clickable(list_selector))
target_list_element.click()
logger.info(f"Zielliste '{list_name}' erfolgreich angeklickt.")
# --- SCHRITT 3: Warten, bis die Ergebnisseite geladen ist ---
# Wir verifizieren, dass der Header der Tabelle sichtbar ist.
# Ein guter Indikator ist die Spaltenüberschrift "Firma".
results_header_selector = (By.XPATH, "//th[normalize-space()='Firma']")
self.wait.until(EC.visibility_of_element_located(results_header_selector))
logger.info("Ergebnistabelle erfolgreich geladen.")
return True
except Exception as e:
logger.critical(f"Fehler beim Navigieren zur Zielliste '{list_name}': {type(e).__name__}", exc_info=True)
self._save_debug_artifacts()
return False
def close(self):
if self.driver:
logger.info("Schließe den WebDriver.")
self.driver.quit()
if __name__ == "__main__":
logger.info("Starte Dealfront Automatisierung - Phase 1: Login-Test")
logger.info("Starte Dealfront Automatisierung - Phase 2: Test der Ziellisten-Navigation")
# Der Name der Zielliste, die wir testen wollen
TARGET_LIST_NAME = "vending_slot"
scraper = None
try:
scraper = DealfrontScraper()
if scraper.driver:
if scraper.login():
logger.info("Login-Prozess erfolgreich abgeschlossen.")
time.sleep(5)
logger.info("Login erfolgreich. Starte Navigation zur Zielliste...")
if scraper.navigate_to_target_list(TARGET_LIST_NAME):
logger.info(f"Erfolgreich zur Liste '{TARGET_LIST_NAME}' navigiert. Wir sind bereit für die Extraktion.")
# Kurze Pause, damit wir das Ergebnis sehen können
time.sleep(5)
else:
logger.error("Navigation zur Zielliste ist fehlgeschlagen.")
else:
logger.error("Login-Prozess ist fehlgeschlagen.")
except Exception as e:
@@ -155,4 +201,5 @@ if __name__ == "__main__":
finally:
if scraper:
scraper.close()
logger.info("Login-Test beendet.")
logger.info("Test der Ziellisten-Navigation beendet.")