UI- & Testautomatisierung
5. UI-Automatisierung und E-Commerce-Tests
In diesem Abschnitt erfahren Sie, wie Sie einen Live-Desktop-Webbrowser automatisch steuern, um Formulare auszufüllen, auf Schaltflächen zu klicken und automatisierte Qualitätssicherungstests (QA) durchzuführen.
Tools und Bibliotheken
selenium(v4+): Ein grundlegendes Tool, das als Robotertreiber fungiert, um einen echten Desktop-Browser zu öffnen und genau wie ein menschlicher Benutzer herumzuklicken.webdriver-manager: Ein Hilfspaket, das automatisch die Hintergrund-Browser-Binärdateien herunterlädt und aktualisiert (wie Chrome-Treiber).💡 Profi-Tipp: Wenn Sie modernes Selenium (v4.6 oder höher) verwenden, ist diese Funktion jetzt nativ direkt in Selenium integriert, was bedeutet, dass Sie dieses zusätzliche Tool oft nicht mehr installieren müssen!
Branchen-Upgrades (was Teams im großen Maßstab nutzen)
Während Selenium ein Branchenklassiker ist, werden Testsuiten für Unternehmen häufig auf moderne Tools aktualisiert, die auf Geschwindigkeit und Widerstandsfähigkeit gegenüber Netzwerkverzögerungen optimiert sind.
1. Hochgeschwindigkeits-Headless-Testen: Playwright (von Microsoft)
Playwright ist auf extreme Geschwindigkeit und Zuverlässigkeit ausgelegt, führt Browseraktionen nativ aus, führt mehrere isolierte Sitzungen gleichzeitig aus und wartet automatisch auf das Laden von Webelementen, bevor es Befehle ausführt. Ist weniger anfällig für plötzliche Testabstürze.
- Wie es im Code aussieht:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
# Launches a fast background (headless) browser instance
browser = p.chromium.launch()
page = browser.new_page()
page.goto("[https://example-store.com](https://example-store.com)")
print(f"Page Title: {page.title()}")
browser.close()
2. Frontend-First-Ökosystem: Cypress
Im Gegensatz zu Selenium oder Playwright, die außerhalb des Browsers laufen und Remote-Befehle senden, führt Cypress seine automatisierten Vorgänge direkt im Browserfenster zusammen mit dem Frontend-Code Ihrer App aus. Beachten Sie, dass Cypress vollständig auf JavaScript/TypeScript basiert, was es zu einem Favoriten für QA-Teams von Frontend-Entwicklern macht.
Kernmethoden und Codebeispiel
webdriver.Chrome(): Startet eine neue Instanz eines Google Chrome-Browsers, der vollständig von Ihrem Python-Skript gesteuert wird.driver.find_element(By.ID / By.XPATH): Durchsucht das Live-Browserfenster mithilfe eindeutiger Code-Fingerabdrücke (IDs oder XPath-Strukturpfade), um auf bestimmte Schaltflächen, Eingabefelder oder Menüs abzuzielen..send_keys('text')&.click(): Gibt Text direkt in Eingabefelder ein und klickt physisch auf Schaltflächen im Live-Webbrowser.WebDriverWait(driver, timeout).until(): Weist das Skript an, zu warten, bis die Elemente vollständig auf dem Bildschirm geladen sind. Dies verhindert, dass Ihr Skript abstürzt, wenn Ihr Internet oder die Website langsam läuft.
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 1. Spawn a background browser process controlled by script code
driver = webdriver.Chrome()
# 2. Navigate to your target application page
driver.get("[https://www.example-store.com/login](https://www.example-store.com/login)")
try:
# 3. Set up a timing loop to safely wait up to 10 seconds for the element to appear
username_field = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "user-input-box"))
)
# 4. Fire physical text keyboard strokes
username_field.send_keys("test_user_account")
# 5. Track down the submission button using structural XPath maps and click it
driver.find_element(By.XPATH, "//button[@type='submit']").click()
finally:
# 6. Always shut down the browser window to clear up computer memory resources
driver.quit()