TikTok Bug 1 von 2 gefixt

Dieser Commit ist enthalten in:
Claude Project Manager
2025-09-14 03:05:03 +02:00
Ursprung f0320a9298
Commit 9583ca2f98

Datei anzeigen

@ -82,6 +82,9 @@ class TikTokRegistration:
self.automation._emit_customer_log("⚙️ Einstellungen werden vorbereitet...") self.automation._emit_customer_log("⚙️ Einstellungen werden vorbereitet...")
self._handle_cookie_banner() self._handle_cookie_banner()
# 2b. Interessen-Dialog behandeln (falls vorhanden)
self._handle_interests_dialog()
# 3. Anmelden-Button klicken # 3. Anmelden-Button klicken
self.automation._emit_customer_log("📋 Registrierungsformular wird geöffnet...") self.automation._emit_customer_log("📋 Registrierungsformular wird geöffnet...")
if not self._click_login_button(): if not self._click_login_button():
@ -317,6 +320,89 @@ class TikTokRegistration:
logger.error(f"Fehler beim Navigieren zur TikTok-Startseite: {e}") logger.error(f"Fehler beim Navigieren zur TikTok-Startseite: {e}")
return False return False
def _handle_interests_dialog(self) -> bool:
"""
Behandelt den "Wähle deine Interessen aus" Dialog, falls angezeigt.
Dieser Dialog erscheint oft beim ersten Besuch der TikTok-Seite.
Returns:
bool: True wenn Dialog behandelt wurde oder nicht existiert, False bei Fehler
"""
try:
# Prüfe ob der Interessen-Dialog vorhanden ist
# Suche nach verschiedenen möglichen Selektoren für den Dialog
interests_dialog_selectors = [
"button:has-text('Überspringen')",
"button:has-text('Skip')",
"button.TUXButton--secondary:has-text('Überspringen')",
"button.TUXButton--secondary:has-text('Skip')",
"button[type='button']:has-text('Überspringen')",
"button[type='button']:has-text('Skip')"
]
# Warte kurz und prüfe ob der Dialog erscheint
dialog_found = False
for selector in interests_dialog_selectors:
if self.automation.browser.is_element_visible(selector, timeout=2000):
dialog_found = True
logger.info(f"Interessen-Dialog erkannt mit Selector: {selector}")
break
if dialog_found:
self.automation._emit_customer_log("⏭️ Überspringe Interessen-Auswahl...")
# Versuche verschiedene Methoden den Überspringen-Button zu klicken
skip_clicked = False
# Methode 1: Direkter Click auf Button mit Text
for selector in interests_dialog_selectors:
try:
if self.automation.browser.click_element(selector, timeout=1000):
logger.info(f"Interessen-Dialog übersprungen mit: {selector}")
skip_clicked = True
break
except:
continue
# Methode 2: Falls direkter Click nicht funktioniert, versuche mit JavaScript
if not skip_clicked:
try:
# JavaScript-Click auf Button mit "Überspringen" Text
js_code = """
const buttons = document.querySelectorAll('button');
for (let button of buttons) {
if (button.textContent.includes('Überspringen') ||
button.textContent.includes('Skip')) {
button.click();
return true;
}
}
return false;
"""
result = self.automation.browser.page.evaluate(js_code)
if result:
logger.info("Interessen-Dialog mit JavaScript übersprungen")
skip_clicked = True
except Exception as e:
logger.warning(f"JavaScript-Click fehlgeschlagen: {e}")
if skip_clicked:
# Warte kurz nach dem Überspringen
self.automation.human_behavior.random_delay(1.0, 2.0)
logger.info("Interessen-Dialog erfolgreich übersprungen")
return True
else:
logger.warning("Konnte Interessen-Dialog nicht überspringen - versuche trotzdem fortzufahren")
return True # Trotzdem fortfahren
logger.debug("Kein Interessen-Dialog gefunden - fahre normal fort")
return True
except Exception as e:
logger.error(f"Fehler beim Behandeln des Interessen-Dialogs: {e}")
# Nicht als kritischer Fehler behandeln - versuche fortzufahren
return True
def _handle_cookie_banner(self) -> bool: def _handle_cookie_banner(self) -> bool:
""" """
Behandelt den Cookie-Banner, falls angezeigt. Behandelt den Cookie-Banner, falls angezeigt.