dealfront_enrichment.py aktualisiert
This commit is contained in:
@@ -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.")
|
||||
Reference in New Issue
Block a user