bugfix
This commit is contained in:
@@ -84,8 +84,8 @@ class DealfrontScraper:
|
|||||||
def login(self):
|
def login(self):
|
||||||
"""
|
"""
|
||||||
Führt den Login-Prozess auf der Dealfront-Plattform durch.
|
Führt den Login-Prozess auf der Dealfront-Plattform durch.
|
||||||
Diese Version wartet explizit auf jedes Element, bevor interagiert wird,
|
Diese Version wartet explizit auf jedes Element und verwendet
|
||||||
und verwendet die verifizierten Selektoren.
|
die verifizierten Selektoren aus dem HTML-Dump.
|
||||||
"""
|
"""
|
||||||
if not self.driver:
|
if not self.driver:
|
||||||
return False
|
return False
|
||||||
@@ -99,36 +99,34 @@ class DealfrontScraper:
|
|||||||
self.driver.get(DEALFRONT_LOGIN_URL)
|
self.driver.get(DEALFRONT_LOGIN_URL)
|
||||||
|
|
||||||
# --- SCHRITT 1: Warten auf das E-Mail-Feld und ausfüllen ---
|
# --- SCHRITT 1: Warten auf das E-Mail-Feld und ausfüllen ---
|
||||||
# Wir verwenden 'name' als Selektor, da dieser im HTML verifiziert ist.
|
email_selector = (By.CSS_SELECTOR, "input[name='email']")
|
||||||
email_selector = (By.NAME, "email")
|
logger.debug(f"Warte auf die Sichtbarkeit des E-Mail-Feldes: {email_selector}")
|
||||||
logger.debug(f"Warte auf die Sichtbarkeit des E-Mail-Feldes mit Selektor: {email_selector}")
|
|
||||||
email_field = self.wait.until(EC.visibility_of_element_located(email_selector))
|
email_field = self.wait.until(EC.visibility_of_element_located(email_selector))
|
||||||
email_field.send_keys(username)
|
email_field.send_keys(username)
|
||||||
logger.info("E-Mail-Feld gefunden und ausgefüllt.")
|
logger.info("E-Mail-Feld gefunden und ausgefüllt.")
|
||||||
|
|
||||||
# --- SCHRITT 2: Passwort-Feld finden und ausfüllen ---
|
# --- SCHRITT 2: Warten auf das Passwort-Feld und ausfüllen ---
|
||||||
# Wir nehmen an, dass das Passwortfeld ebenfalls 'name="password"' hat.
|
# KORRIGIERT: Wir verwenden den CSS-Selektor für das 'type'-Attribut,
|
||||||
password_selector = (By.NAME, "password")
|
# da kein 'name'-Attribut vorhanden ist.
|
||||||
logger.debug(f"Suche Passwort-Feld mit Selektor: {password_selector}")
|
password_selector = (By.CSS_SELECTOR, "input[type='password']")
|
||||||
password_field = self.driver.find_element(*password_selector) # * entpackt das Tupel
|
logger.debug(f"Warte auf die Sichtbarkeit des Passwort-Feldes: {password_selector}")
|
||||||
|
password_field = self.wait.until(EC.visibility_of_element_located(password_selector))
|
||||||
password_field.send_keys(password)
|
password_field.send_keys(password)
|
||||||
logger.info("Passwort-Feld gefunden und ausgefüllt.")
|
logger.info("Passwort-Feld gefunden und ausgefüllt.")
|
||||||
|
|
||||||
# --- SCHRITT 3: Warten auf den Anmelde-Button und klicken ---
|
# --- SCHRITT 3: Warten auf den Anmelde-Button und klicken ---
|
||||||
# Wir suchen nach einem Button, der den Text 'Anmelden' enthält. Das ist sehr robust.
|
login_button_selector = (By.XPATH, "//button[normalize-space()='Log in']") # Englische Version, falls Sprache umschaltet
|
||||||
login_button_selector = (By.XPATH, "//button[normalize-space()='Anmelden']")
|
|
||||||
logger.debug(f"Warte darauf, dass der Anmelde-Button klickbar ist: {login_button_selector}")
|
logger.debug(f"Warte darauf, dass der Anmelde-Button klickbar ist: {login_button_selector}")
|
||||||
login_button = self.wait.until(EC.element_to_be_clickable(login_button_selector))
|
login_button = self.wait.until(EC.element_to_be_clickable(login_button_selector))
|
||||||
login_button.click()
|
login_button.click()
|
||||||
logger.info("Anmelde-Button geklickt. Warte auf die Verifizierung...")
|
logger.info("Anmelde-Button geklickt. Warte auf die Verifizierung...")
|
||||||
|
|
||||||
# --- SCHRITT 4: Login-Erfolg verifizieren ---
|
# --- SCHRITT 4: Login-Erfolg verifizieren ---
|
||||||
# Wir warten auf das Suchfeld im Dashboard.
|
|
||||||
verification_element_selector = (By.XPATH, "//input[@data-cy='header-search-input']")
|
verification_element_selector = (By.XPATH, "//input[@data-cy='header-search-input']")
|
||||||
logger.debug(f"Warte auf das Verifizierungs-Element: {verification_element_selector}")
|
logger.debug(f"Warte auf das Verifizierungs-Element: {verification_element_selector}")
|
||||||
self.wait.until(EC.visibility_of_element_located(verification_element_selector))
|
self.wait.until(EC.visibility_of_element_located(verification_element_selector))
|
||||||
|
|
||||||
logger.info("Login ERFOLGREICH! Dashboard-Element gefunden.")
|
logger.info("LOGIN ERFOLGREICH! Dashboard-Element gefunden.")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
Reference in New Issue
Block a user