diff --git a/dealfront_enrichment.py b/dealfront_enrichment.py index 023ed669..7222c71e 100644 --- a/dealfront_enrichment.py +++ b/dealfront_enrichment.py @@ -10,7 +10,7 @@ from selenium.webdriver.support import expected_conditions as EC from selenium.common.exceptions import TimeoutException, NoSuchElementException # Wichtig: Die zentralen Imports zuerst -from config import Config, DEALFRONT_LOGIN_URL, DEALFRONT_CREDENTIALS_FILE +from config import Config, DEALFRONT_LOGIN_URL, DEALFRONT_CREDENTIALS_FILE, DEALFRONT_TARGET_UR # Logging-Konfiguration, eigenständig für dieses Skript LOG_LEVEL = logging.DEBUG if Config.DEBUG else logging.INFO @@ -136,28 +136,24 @@ class DealfrontScraper: def navigate_to_target(self): - """Navigiert zum 'Target'-Bereich der Anwendung.""" + """Navigiert direkt zur URL des 'Target'-Bereichs.""" try: - logger.info("Navigiere zum 'Target'-Bereich...") - target_button_selector = (By.XPATH, "//a[contains(@class, 'text-base') and .//span[normalize-space()='Target']] | //a[.//div[normalize-space()='Target']]") + logger.info(f"Navigiere direkt zur Target-URL: {Config.DEALFRONT_TARGET_URL}") + self.driver.get(Config.DEALFRONT_TARGET_URL) - # Alternative, falls der obere Selektor nicht klappt: - # target_button_selector = (By.CSS_SELECTOR, "a[data-test-product-link-for='Target']") - - target_button = self.wait.until(EC.element_to_be_clickable(target_button_selector)) - target_button.click() - - # Verifizieren, dass die Seite geladen ist, indem wir auf den "+ Neue Suche"-Button warten + # Verifizieren, dass die Seite geladen ist, indem wir auf den "+ Neue Suche"-Button warten. + # Dieser Selektor ist von unserer ursprünglichen Strategie und sollte hier funktionieren. new_search_button_selector = (By.XPATH, "//button[normalize-space()='+ Neue Suche']") self.wait.until(EC.visibility_of_element_located(new_search_button_selector)) - logger.info("'Target'-Seite erfolgreich geladen.") + logger.info("'Target'-Seite erfolgreich via URL-Aufruf geladen.") return True except Exception as e: - logger.critical(f"Navigation zur 'Target'-Seite fehlgeschlagen: {type(e).__name__}", exc_info=True) + logger.critical(f"Direkte Navigation zur 'Target'-Seite fehlgeschlagen: {type(e).__name__}", exc_info=True) self._save_debug_artifacts() return False + def load_search(self, search_name): """Lädt eine vordefinierte Suche anhand ihres Namens.""" try: