Integrationen

Selenium Wire + CaptchaAI: Netzwerkdiagnose in eigener QA

Anwendungsbereich: Dieser Leitfaden richtet sich ausschließlich an eigene oder ausdrücklich autorisierte QA-, Staging- und Produktionsumgebungen. Beschrieben werden Diagnose- und Beobachtungsmuster für Ihre eigene CAPTCHA-Integration – nicht für fremde Websites oder unautorisierte Workflows.

Wenn Ihre CaptchaAI-Integration in der eigenen QA nicht wie erwartet greift, liegt die Antwort fast immer im Netzwerkverkehr: Welche CAPTCHA-Requests laufen tatsächlich, mit welchem Sitekey – und kommt das gelöste Token korrekt an Ihrem Backend an? Genau diese Ebene macht Selenium Wire sichtbar. Die Erweiterung ergänzt Selenium um das Mitlesen von HTTP-Requests und -Antworten und zeigt in einer eigenen Staging-Umgebung nachvollziehbar, was zwischen Browser, CAPTCHA-Anbieter und Ihrer API passiert.

Standard-Selenium steuert nur das DOM und sagt Ihnen nichts über die Requests dahinter. Für die CAPTCHA-Diagnose ist aber gerade der Verkehr entscheidend – dort erkennen Sie, ob ein Sitekey korrekt geladen wird und ob das Token seinen Weg bis zur Verifizierung findet.

Was Sie mit Selenium Wire in der QA klären

Die häufigsten Fragen, die sich mit Request-Beobachtung schnell beantworten lassen:

  • Wird das CAPTCHA-Skript zum richtigen Zeitpunkt geladen?
  • Stammt der Sitekey aus der erwarteten Konfiguration?
  • Erreicht das Token Ihr Backend mit dem korrekten Feldnamen (g-recaptcha-response, cf-turnstile-response)?
  • Antwortet Ihre Verifizierungs-API so, wie es die Dokumentation beschreibt?

Selenium Wire in der eigenen QA einrichten

Die Installation erfolgt über pip und benötigt keine zusätzliche Konfiguration:

pip install selenium-wire

Anschließend ersetzt der Import aus seleniumwire den gewohnten Selenium-WebDriver. Über request_storage begrenzen Sie den Speicher, damit lange laufende Tests nicht unnötig Daten anhäufen:

from seleniumwire import webdriver

options = {
    'request_storage': 'memory',
    'request_storage_max_size': 200,
}
driver = webdriver.Chrome(seleniumwire_options=options)
driver.get('https://staging.eigene-app.test/signup')

Der Aufruf richtet sich hier bewusst gegen eine eigene Staging-Domain. Nutzen Sie für alle Beispiele URLs, die Ihnen gehören oder für die Sie eine ausdrückliche Testfreigabe haben.

CAPTCHA-Requests gezielt herausfiltern

In einem realen Signup-Flow entstehen schnell Dutzende Requests. Statt alle durchzusehen, filtern Sie gezielt nach CAPTCHA-bezogenen Aufrufen. So bleibt die Analyse überschaubar und Sie sehen sofort, ob reCAPTCHA- oder Turnstile-Ressourcen überhaupt geladen wurden:

captcha_requests = [
    request for request in driver.requests
    if 'recaptcha' in request.url or 'turnstile' in request.url
]

for req in captcha_requests:
    print(req.method, req.url, req.response.status_code if req.response else '-')

Die ausgegebenen Statuscodes sind ein guter erster Indikator: Bleibt eine erwartete CAPTCHA-Ressource aus oder liefert sie einen Fehlercode, ist das Problem oft schon vor der eigentlichen Lösung zu verorten.

Die CaptchaAI-Antwort im Test verifizieren

Nachdem Ihre Test-Suite ein Token von CaptchaAI angefordert und in das Formularfeld geschrieben hat, interessiert der darauffolgende Submit. Hier prüfen Sie, ob das Backend die Absendung akzeptiert:

submit = next(
    req for req in driver.requests if req.url.endswith('/api/signup')
)
assert submit.response is not None
assert submit.response.status_code == 200
assert b'ok' in submit.response.body

Dieser Assert-Block schließt die Diagnosekette: Sie haben gesehen, dass das CAPTCHA geladen wurde, dass das Token übermittelt wurde und dass Ihr Backend mit 200 antwortet. CaptchaAI fügt sich dabei nahtlos ein, weil das Token immer für Ihren eigenen Sitekey ausgestellt wird und Sie es wie jedes andere Formularfeld behandeln.

Aufgezeichnete Daten DSGVO-konform behandeln

Selenium Wire liest den vollständigen Verkehr mit – inklusive Headern, Cookies und Payloads. Für DACH-Teams ist das kein Randthema: IP-Adressen und Session-Daten gelten nach DSGVO als personenbezogen, sobald reale Nutzer im Spiel sind. In der eigenen QA gelten deshalb klare Regeln:

  • Verwenden Sie ausschließlich Test-Konten und synthetische Test-Daten, keine Produktivdaten.
  • Speichern Sie aufgezeichnete Requests verschlüsselt und nur so lange, wie der Test es erfordert.
  • Filtern Sie sensible Header und Felder heraus, bevor eine Aufzeichnung in Logs, Tickets oder ein Repository gelangt.
  • Betreiben Sie Worker und Staging-Umgebungen bewusst – etwa auf eigener Infrastruktur bei Hetzner oder IONOS – und dokumentieren Sie, wer Zugriff auf die Mitschnitte hat.

So bleibt die Netzwerkbeobachtung ein Diagnosewerkzeug und wird nicht selbst zur Datenquelle mit Risiko.

Request-Capture verantwortungsvoll betreiben

Selenium Wire zeigt sehr detailliert, was zwischen Browser, CAPTCHA-Anbieter und Ihrer API passiert. Damit dieser Vorteil nicht zur Belastung wird, lohnt sich ein fester Betriebsrahmen. Beschränken Sie das Mitschneiden auf Tests, die Beobachtung wirklich benötigen. Standard-Tests sollten ohne Request-Capture laufen, damit weniger sensible Daten anfallen und die Läufe schneller bleiben.

Hinterlegen Sie zu jeder Aufzeichnung eine kurze Beschreibung im Test-Code: Welcher Anwendungsfall wurde geprüft, welcher Sitekey war beteiligt, welche Erwartung stand im Assert. In GitLab-CI- oder GitHub-Actions-Pipelines lässt sich dieser Kontext direkt am Job dokumentieren. So bleibt jederzeit nachvollziehbar, dass die Beobachtung im dokumentierten Anwendungsbereich stattgefunden hat.

Häufige Fragen (FAQ)

Wie behandle ich aufgezeichnete Requests DSGVO-konform?

Mit Test-Daten, kurzer Aufbewahrung und Filterung. Zeichnen Sie nur in eigener QA auf, entfernen Sie personenbezogene Header vor der Speicherung und dokumentieren Sie den Zugriff. IP-Adressen zählen bereits als personenbezogene Daten.

Verändert Selenium Wire das Verhalten meiner Tests?

In der Regel nicht spürbar. Selenium Wire liest den Verkehr mit, ohne die Test-Logik zu ändern. Ein Proxy-Layer kann Läufe leicht verlangsamen – begrenzen Sie deshalb request_storage und aktivieren Sie Capture nur, wo es gebraucht wird.

Läuft Selenium Wire im Headless-Modus?

Ja, sowohl Headless als auch Headed werden unterstützt. Achten Sie auf eine konsistente Konfiguration zwischen beiden Modi, damit sich das beobachtete Verhalten nicht durch Fenstergröße oder User-Agent unterscheidet.

Eignet sich Selenium Wire für Lasttests?

Nur eingeschränkt. Für reine Lasttests sind dedizierte Tools effizienter. Die Stärke von Selenium Wire liegt in der gezielten Diagnose einzelner Flows, nicht im Durchsatz vieler paralleler Sitzungen.

Verwandte Leitfäden

Klare CAPTCHA-Diagnose in eigener QA – Starten Sie mit CaptchaAI.

Kommentare sind für diesen Artikel deaktiviert.