Dieser Commit ist enthalten in:
Claude Project Manager
2025-08-01 23:50:28 +02:00
Commit 04585e95b6
290 geänderte Dateien mit 64086 neuen und 0 gelöschten Zeilen

Datei anzeigen

@ -0,0 +1,132 @@
"""
VK Registrierung - Handhabt den Registrierungsprozess
"""
import logging
import time
import random
from typing import Dict
from playwright.sync_api import Page
from social_networks.vk import vk_selectors as selectors
from social_networks.vk.vk_ui_helper import VKUIHelper
logger = logging.getLogger("vk_registration")
class VKRegistration:
"""
Handhabt den VK Registrierungsprozess
"""
def __init__(self, page: Page, ui_helper: VKUIHelper, screenshots_dir: str = None, save_screenshots: bool = True):
"""
Initialisiert die Registrierung
"""
self.page = page
self.ui_helper = ui_helper
self.screenshots_dir = screenshots_dir
self.save_screenshots = save_screenshots
def fill_registration_form(self, account_data: Dict[str, str]) -> Dict[str, any]:
"""
Füllt das Registrierungsformular aus
"""
try:
logger.info("Fülle VK Registrierungsformular aus")
# Warte auf Registrierungsseite
time.sleep(random.uniform(2, 3))
self.ui_helper.take_screenshot("registration_form")
# Vorname eingeben
if self.ui_helper.wait_for_element(selectors.REGISTRATION_FIRST_NAME, timeout=10000):
first_name = account_data.get("first_name", "")
logger.info(f"Gebe Vorname ein: {first_name}")
self.ui_helper.type_with_delay(selectors.REGISTRATION_FIRST_NAME, first_name)
time.sleep(random.uniform(0.5, 1))
# Nachname eingeben
if self.ui_helper.wait_for_element(selectors.REGISTRATION_LAST_NAME, timeout=5000):
last_name = account_data.get("last_name", "")
logger.info(f"Gebe Nachname ein: {last_name}")
self.ui_helper.type_with_delay(selectors.REGISTRATION_LAST_NAME, last_name)
time.sleep(random.uniform(0.5, 1))
# Geburtstag auswählen
self._select_birthday(account_data)
# Geschlecht auswählen
self._select_gender(account_data)
# Screenshot vor dem Fortfahren
self.ui_helper.take_screenshot("registration_form_filled")
# Fortfahren Button klicken
if self.ui_helper.wait_for_element(selectors.REGISTRATION_CONTINUE_BUTTON, timeout=5000):
logger.info("Klicke auf Fortfahren")
self.ui_helper.click_with_retry(selectors.REGISTRATION_CONTINUE_BUTTON)
time.sleep(random.uniform(2, 3))
return {
"success": True,
"message": "Registrierungsformular ausgefüllt"
}
except Exception as e:
logger.error(f"Fehler beim Ausfüllen des Registrierungsformulars: {e}")
self.ui_helper.take_screenshot("registration_form_error")
return {
"success": False,
"error": str(e),
"message": f"Fehler beim Ausfüllen des Formulars: {str(e)}"
}
def _select_birthday(self, account_data: Dict[str, str]):
"""
Wählt das Geburtsdatum aus
"""
try:
birthday = account_data.get("birthday", "1990-01-15")
year, month, day = birthday.split("-")
# Tag auswählen
if self.ui_helper.wait_for_element(selectors.REGISTRATION_BIRTHDAY_DAY, timeout=5000):
logger.info(f"Wähle Geburtstag: {day}")
self.ui_helper.select_dropdown_option(selectors.REGISTRATION_BIRTHDAY_DAY, day.lstrip("0"))
time.sleep(random.uniform(0.3, 0.6))
# Monat auswählen
if self.ui_helper.wait_for_element(selectors.REGISTRATION_BIRTHDAY_MONTH, timeout=5000):
logger.info(f"Wähle Geburtsmonat: {month}")
self.ui_helper.select_dropdown_option(selectors.REGISTRATION_BIRTHDAY_MONTH, month.lstrip("0"))
time.sleep(random.uniform(0.3, 0.6))
# Jahr auswählen
if self.ui_helper.wait_for_element(selectors.REGISTRATION_BIRTHDAY_YEAR, timeout=5000):
logger.info(f"Wähle Geburtsjahr: {year}")
self.ui_helper.select_dropdown_option(selectors.REGISTRATION_BIRTHDAY_YEAR, year)
time.sleep(random.uniform(0.3, 0.6))
except Exception as e:
logger.warning(f"Fehler bei der Geburtsdatum-Auswahl: {e}")
def _select_gender(self, account_data: Dict[str, str]):
"""
Wählt das Geschlecht aus
"""
try:
gender = account_data.get("gender", "male").lower()
if gender == "female":
if self.ui_helper.wait_for_element(selectors.REGISTRATION_GENDER_FEMALE, timeout=5000):
logger.info("Wähle Geschlecht: Weiblich")
self.ui_helper.check_radio_button(selectors.REGISTRATION_GENDER_FEMALE)
else:
if self.ui_helper.wait_for_element(selectors.REGISTRATION_GENDER_MALE, timeout=5000):
logger.info("Wähle Geschlecht: Männlich")
self.ui_helper.check_radio_button(selectors.REGISTRATION_GENDER_MALE)
time.sleep(random.uniform(0.3, 0.6))
except Exception as e:
logger.warning(f"Fehler bei der Geschlechtsauswahl: {e}")