diff --git a/database/accounts.db-journal b/database/accounts.db-journal new file mode 100644 index 0000000..db6a7b5 Binary files /dev/null and b/database/accounts.db-journal differ diff --git a/social_networks/tiktok/tiktok_registration.py b/social_networks/tiktok/tiktok_registration.py index 98796f5..6b3250f 100644 --- a/social_networks/tiktok/tiktok_registration.py +++ b/social_networks/tiktok/tiktok_registration.py @@ -1039,6 +1039,39 @@ class TikTokRegistration: logger.info("Gebe jetzt Passwort ein (nach Code-Verifikation)") + # WICHTIG: Passwort-Feld muss oft erst "aktiviert" werden + logger.info("Aktiviere Passwort-Feld durch Tab-Navigation oder direkten Click") + + # Methode 1: Tab-Navigation vom Code-Feld zum Passwort-Feld + try: + # Finde das Code-Eingabefeld und navigiere mit Tab weiter + code_field = self.automation.browser.page.locator("input[placeholder*='Code']").first + if code_field.is_visible(): + code_field.press("Tab") + logger.info("Tab-Navigation vom Code-Feld ausgeführt") + self.automation.human_behavior.random_delay(0.5, 1.0) + except: + logger.debug("Tab-Navigation fehlgeschlagen") + + # Methode 2: Versuche zuerst das Passwort-Feld zu "wecken" durch einen Click + try: + # Suche nach dem Container oder Label des Passwort-Felds + password_container_selectors = [ + "div:has(> input[type='password'])", + "div:has-text('Passwort'):has(input)", + "label:has-text('Passwort')", + "[class*='InputContainer']:has(input[type='password'])" + ] + + for container_selector in password_container_selectors: + if self.automation.browser.is_element_visible(container_selector, timeout=500): + self.automation.browser.click_element(container_selector) + logger.info(f"Passwort-Container angeklickt: {container_selector}") + self.automation.human_behavior.random_delay(0.3, 0.5) + break + except: + logger.debug("Container-Click fehlgeschlagen") + # Nach Code-Eingabe erscheint ein neues Passwort-Feld # Verschiedene Selektoren für das Passwort-Feld nach Code-Eingabe password_selectors = [ @@ -2162,7 +2195,15 @@ class TikTokRegistration: logger.info("Verwende Character-by-Character Eingabe für Passwort-Feld") - # Fokussiere und lösche das Feld + # Fokussiere das Feld mehrfach um sicherzustellen dass es aktiv ist + element.click() + self.automation.human_behavior.random_delay(0.2, 0.4) + + # Doppelter Focus-Versuch falls das Feld träge reagiert + element.focus() + self.automation.human_behavior.random_delay(0.1, 0.2) + + # Nochmal klicken um wirklich sicher zu sein element.click() self.automation.human_behavior.random_delay(0.1, 0.2)