dealfront_enrichment.py aktualisiert
This commit is contained in:
@@ -86,7 +86,8 @@ class DealfrontScraper:
|
|||||||
|
|
||||||
def login_and_navigate_to_target(self):
|
def login_and_navigate_to_target(self):
|
||||||
"""
|
"""
|
||||||
Führt Login durch und navigiert direkt zur Target-URL.
|
Führt den Login durch und navigiert zur Target-Seite via Klick auf den "Quick Link".
|
||||||
|
Dieser Ansatz ist maximal robust.
|
||||||
"""
|
"""
|
||||||
if not self.driver: return False
|
if not self.driver: return False
|
||||||
username, password = self._load_credentials()
|
username, password = self._load_credentials()
|
||||||
@@ -102,17 +103,22 @@ class DealfrontScraper:
|
|||||||
self.driver.find_element(By.XPATH, "//button[normalize-space()='Log in']").click()
|
self.driver.find_element(By.XPATH, "//button[normalize-space()='Log in']").click()
|
||||||
logger.info("Login-Befehl gesendet.")
|
logger.info("Login-Befehl gesendet.")
|
||||||
|
|
||||||
# SCHRITT 2: DIREKTE NAVIGATION (robuster als auf Dashboard zu warten)
|
# SCHRITT 2: NAVIGATION VIA QUICK-LINK-KACHEL
|
||||||
# Eine kurze, feste Pause nach dem Klick, bevor wir die URL wechseln.
|
logger.info("Warte auf Dashboard und 'Prospects finden'-Link in den Quick Links.")
|
||||||
time.sleep(3)
|
|
||||||
logger.info(f"Navigiere direkt zur Target-URL: {Config.DEALFRONT_TARGET_URL}")
|
# Dieser XPath zielt auf den Link in der "Quick links"-Kachel
|
||||||
self.driver.get(Config.DEALFRONT_TARGET_URL)
|
prospects_link_selector = (By.XPATH, "//a[contains(@href, '/t/prospector/companies')]")
|
||||||
|
prospects_link = self.wait.until(EC.element_to_be_clickable(prospects_link_selector))
|
||||||
|
logger.info("'Prospects finden'-Link gefunden. Klicke darauf...")
|
||||||
|
prospects_link.click()
|
||||||
|
|
||||||
# SCHRITT 3: NAVIGATION VERIFIZIEREN
|
# SCHRITT 3: NAVIGATION VERIFIZIEREN
|
||||||
verification_selector = (By.XPATH, "//button[normalize-space()='+ Neue Suche']")
|
verification_target_selector = (By.XPATH, "//button[normalize-space()='+ Neue Suche']")
|
||||||
self.wait.until(EC.visibility_of_element_located(verification_selector))
|
self.wait.until(EC.visibility_of_element_located(verification_target_selector))
|
||||||
logger.info("'Target'-Seite erfolgreich geladen.")
|
|
||||||
|
logger.info("'Target'-Seite erfolgreich und vollständig geladen.")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.critical(f"Login- oder Navigationsprozess fehlgeschlagen: {type(e).__name__}", exc_info=True)
|
logger.critical(f"Login- oder Navigationsprozess fehlgeschlagen: {type(e).__name__}", exc_info=True)
|
||||||
self._save_debug_artifacts()
|
self._save_debug_artifacts()
|
||||||
|
|||||||
Reference in New Issue
Block a user