TikTok - PW Problem zur Haelfte gefixt

Dieser Commit ist enthalten in:
Claude Project Manager
2025-09-14 03:40:11 +02:00
Ursprung 51011f9e97
Commit a85b6dcdd6
2 geänderte Dateien mit 36 neuen und 24 gelöschten Zeilen

Datei anzeigen

@ -1042,14 +1042,23 @@ class TikTokRegistration:
# Nach Code-Eingabe erscheint ein neues Passwort-Feld
# Verschiedene Selektoren für das Passwort-Feld nach Code-Eingabe
password_selectors = [
# Aktueller Selektor basierend auf Console-Output
"input[type='password'][placeholder='Passwort']",
"input.css-wv3bkt-InputContainer.etcs7ny1",
"input.css-wv3bkt-InputContainer",
"input.etcs7ny1[type='password']",
# Original Selektor
# Neue TikTok CSS-Klassen (2025)
"input.css-15uxi3b-5e6d46e3--InputContainer", # Neue spezifische Klasse
"input.epfb2861[type='password']", # Neue zusätzliche Klasse
"input[class*='InputContainer'][type='password']", # Partial class match
# Generische Selektoren (stabiler)
"input[type='password'][placeholder='Passwort']", # Type + Placeholder
"input[type='password'][autocomplete='new-password']", # Type + Autocomplete
"input[placeholder='Passwort']", # Nur Placeholder
# Alte Selektoren (Fallback)
"input.css-wv3bkt-InputContainer.etcs7ny1", # Alt TikTok-Klasse
"input.css-wv3bkt-InputContainer", # Alt TikTok-Klasse
"input.etcs7ny1[type='password']", # Alt TikTok-Klasse
# Original und weitere Fallbacks
self.selectors.PASSWORD_FIELD,
# Fallback-Selektoren
"input[type='password']",
"input[placeholder*='Passwort']",
"input[placeholder*='Password']",
@ -1057,23 +1066,26 @@ class TikTokRegistration:
]
password_success = False
for selector in password_selectors:
if self.automation.browser.is_element_visible(selector, timeout=2000):
logger.info(f"Passwort-Feld gefunden: {selector}")
# Verwende Character-by-Character Eingabe für Passwort-Feld
password_success = self._fill_password_field_character_by_character(selector, account_data["password"])
if password_success:
# VALIDATION: Prüfe ob Passwort tatsächlich im Feld steht
self.automation.human_behavior.random_delay(0.5, 1.0)
actual_value = self._get_input_field_value(selector)
if actual_value == account_data["password"]:
logger.info("Passwort erfolgreich eingegeben und validiert")
break
else:
logger.warning(f"Passwort-Validierung fehlgeschlagen: erwartet='{account_data['password']}', erhalten='{actual_value}'")
password_success = False
else:
logger.debug(f"Passwort-Eingabe mit Selektor {selector} fehlgeschlagen")
for i, selector in enumerate(password_selectors):
logger.debug(f"Versuche Passwort-Selektor {i+1}/{len(password_selectors)}: {selector}")
try:
if self.automation.browser.is_element_visible(selector, timeout=1000):
logger.info(f"✓ Passwort-Feld gefunden mit Selektor {i+1}: {selector}")
# Verwende Character-by-Character Eingabe für Passwort-Feld
password_success = self._fill_password_field_character_by_character(selector, account_data["password"])
if password_success:
# VALIDATION: Prüfe ob Passwort tatsächlich im Feld steht
self.automation.human_behavior.random_delay(0.5, 1.0)
actual_value = self._get_input_field_value(selector)
if actual_value == account_data["password"]:
logger.info("Passwort erfolgreich eingegeben und validiert")
break
else:
logger.warning(f"Passwort-Validierung fehlgeschlagen: erwartet='{account_data['password']}', erhalten='{actual_value}'")
password_success = False
except Exception as e:
logger.debug(f"Passwort-Selektor {i+1} fehlgeschlagen: {e}")
continue
if not password_success:
logger.warning("Fallback 1: Versuche UI Helper für Passwort-Eingabe")