136 Zeilen
4.3 KiB
Python
136 Zeilen
4.3 KiB
Python
"""
|
||
Gmail/Google Account UI Selektoren und URLs
|
||
"""
|
||
|
||
# URLs
|
||
BASE_URL = "https://accounts.google.com/"
|
||
REGISTRATION_URL = "https://workspace.google.com/intl/de/gmail/"
|
||
LOGIN_URL = "https://accounts.google.com/ServiceLogin"
|
||
|
||
# Name Eingabe (Erster Schritt)
|
||
FIRST_NAME_INPUT = "input[name='firstName']"
|
||
LAST_NAME_INPUT = "input[name='lastName']"
|
||
NEXT_BUTTON = "button[jsname='LgbsSe']"
|
||
NEXT_BUTTON_SPAN = "span:has-text('Weiter')"
|
||
NEXT_BUTTON_MATERIAL = "div.VfPpkd-RLmnJb" # Material Design Weiter-Button
|
||
|
||
# Geburtsdatum und Geschlecht
|
||
BIRTHDAY_DAY = "input[name='day']"
|
||
BIRTHDAY_MONTH = "select[name='month']"
|
||
BIRTHDAY_YEAR = "input[name='year']"
|
||
GENDER_SELECT = "select[name='gender']"
|
||
|
||
# Gmail-Adresse erstellen
|
||
CREATE_GMAIL_RADIO = "div[data-value='createAccount']"
|
||
GMAIL_USERNAME_INPUT = "input[name='Username']"
|
||
GMAIL_USERNAME_SUGGESTION_RADIOS = "input[type='radio'][name='usernameRadio']"
|
||
|
||
# Passwort
|
||
PASSWORD_INPUT = "input[name='Passwd']"
|
||
PASSWORD_CONFIRM_INPUT = "input[name='PasswdAgain']"
|
||
|
||
# Telefonnummer Verifizierung
|
||
PHONE_INPUT = "input[id='phoneNumberId']"
|
||
PHONE_COUNTRY_SELECT = "select[data-id='countryList']"
|
||
|
||
# SMS Verifizierung
|
||
SMS_CODE_INPUT = "input[name='code']"
|
||
VERIFY_BUTTON = "button:has-text('Bestätigen')"
|
||
|
||
# Recovery Email (Optional)
|
||
RECOVERY_EMAIL_INPUT = "input[name='recoveryEmail']"
|
||
SKIP_BUTTON = "button:has-text('Überspringen')"
|
||
# Enhanced Skip Button Varianten mit 2025 Updates
|
||
SKIP_BUTTON_VARIANTS = [
|
||
# German
|
||
"button:has-text('Überspringen')",
|
||
"button:has-text('Später')",
|
||
"button:has-text('Vielleicht später')",
|
||
"button:has-text('Nicht jetzt')",
|
||
"button:has-text('Jetzt nicht')",
|
||
"button:has-text('Später hinzufügen')",
|
||
"button:has-text('Überspringen und fortfahren')",
|
||
# English
|
||
"button:has-text('Not now')",
|
||
"button:has-text('Maybe later')",
|
||
"button:has-text('Skip')",
|
||
"button:has-text('Skip for now')",
|
||
"button:has-text('I'll add it later')",
|
||
"button:has-text('Remind me later')",
|
||
"button:has-text('Continue without')",
|
||
"button:has-text('No thanks')",
|
||
# Spanish
|
||
"button:has-text('Omitir')",
|
||
"button:has-text('Ahora no')",
|
||
"button:has-text('Más tarde')",
|
||
"button:has-text('Saltar')",
|
||
# French
|
||
"button:has-text('Ignorer')",
|
||
"button:has-text('Pas maintenant')",
|
||
"button:has-text('Plus tard')",
|
||
"button:has-text('Passer')",
|
||
# Italian
|
||
"button:has-text('Ignora')",
|
||
"button:has-text('Non ora')",
|
||
"button:has-text('Salta')",
|
||
# Portuguese
|
||
"button:has-text('Pular')",
|
||
"button:has-text('Agora não')",
|
||
"button:has-text('Mais tarde')",
|
||
# Turkish
|
||
"button:has-text('Şimdi değil')",
|
||
"button:has-text('Atla')",
|
||
"button:has-text('Daha sonra')",
|
||
# Indonesian
|
||
"button:has-text('Lewati')",
|
||
"button:has-text('Nanti saja')",
|
||
# Russian (Cyrillic)
|
||
"button:has-text('Пропустить')",
|
||
"button:has-text('Не сейчас')",
|
||
"button:has-text('Позже')",
|
||
# Material Design Button Classes
|
||
".VfPpkd-LgbsSe-OWXEXe-k8QpJ:has-text('Skip')",
|
||
".VfPpkd-LgbsSe-OWXEXe-k8QpJ:has-text('Überspringen')",
|
||
# Links and generic text fallbacks
|
||
"a:has-text('Überspringen')",
|
||
"a:has-text('Not now')",
|
||
"a:has-text('Skip')",
|
||
"a:has-text('Use another verification method')",
|
||
"a:has-text('Andere Bestätigungsmethode verwenden')",
|
||
# Div buttons
|
||
"div[role='button']:has-text('Skip')",
|
||
"div[role='button']:has-text('Überspringen')",
|
||
"div[role='button']:has-text('Not now')",
|
||
# Span elements
|
||
"span:has-text('Skip for now')",
|
||
"span:has-text('Jetzt überspringen')",
|
||
# Text-based fallbacks
|
||
"text=Überspringen",
|
||
"text=Not now",
|
||
"text=Skip",
|
||
"text=Omitir",
|
||
"text=Ignorer",
|
||
"text=Ignora",
|
||
"text=Şimdi değil",
|
||
"text=Lewati",
|
||
"text=Пропустить"
|
||
]
|
||
|
||
# Nutzungsbedingungen
|
||
AGREE_BUTTON = "button:has-text('Ich stimme zu')"
|
||
TERMS_CHECKBOX = "input[type='checkbox']"
|
||
|
||
# Fehler- und Erfolgsmeldungen
|
||
ERROR_MESSAGE = "div[jsname='B34EJ'] span"
|
||
ERROR_MESSAGE_ALT = "div.LXRPh"
|
||
CAPTCHA_CONTAINER = "div.aCsJod"
|
||
|
||
# Login Seite
|
||
LOGIN_EMAIL_INPUT = "input[type='email']"
|
||
LOGIN_PASSWORD_INPUT = "input[type='password'][name='password']"
|
||
LOGIN_NEXT_BUTTON = "button:has-text('Weiter')"
|
||
|
||
# Allgemeine Elemente
|
||
LOADING_SPINNER = "div.ANuIbb"
|
||
FORM_ERROR = "div[jsname='B34EJ']"
|