Playwright mit Browserberg nutzen
Playwright verbindet sich über das Chrome DevTools Protocol mit Browserberg. Deine Selektoren, Fixtures, Assertions und dein Test-Runner bleiben unverändert.
Verbinden in einer Zeile
import { chromium } from 'playwright';
const browser = await chromium.connectOverCDP(
`wss://browserberg.com/v1/connect?token=${process.env.BB_TOKEN}`);
const context = browser.contexts()[0];
const page = await context.newPage();
await page.goto('https://portal.example.de');
await page.getByLabel('Benutzername').fill('...');
await page.getByRole('button', { name: 'Anmelden' }).click();
import os
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.connect_over_cdp(
f"wss://browserberg.com/v1/connect?token={os.environ['BB_TOKEN']}")
page = browser.contexts[0].new_page()
page.goto("https://portal.example.de")
Details
| Protokoll | Chrome DevTools Protocol über WebSocket |
|---|---|
| Playwright-Versionen | 1.40 und neuer, Node und Python |
| Connect-Methode | chromium.connectOverCDP / connect_over_cdp |
| Browser-Engine | Chromium |
| Session-Start, p50-Ziel | unter 1,5 Sekunden |
| Wo Sessions laufen | EU-Bare-Metal (OVHcloud) |
Stand: 2026-08-30
Was du wissen solltest
Bestehenden Context nutzen, keinen neuen
connectOverCDP hängt sich an einen laufenden Browser. Ein Aufruf von browser.newContext() erzeugt einen zweiten, leeren Context und verliert das wiederhergestellte Profil. Nimm browser.contexts()[0].
Profile überdauern Läufe
Cookies, localStorage und IndexedDB werden am Ende einer Session gesichert und zu Beginn der nächsten wiederhergestellt — der eingeloggte Zustand bleibt erhalten, ohne den Login zu wiederholen.
Playwrights eigener Browser-Download entfällt
Du startest keinen lokalen Browser, playwright install kann in der CI entfallen. Das spart meist mehr Build-Zeit als die Automatisierung selbst braucht.
Fragen, die wirklich gestellt werden
Brauche ich weiterhin `playwright install`?
Nein. Du hängst dich an einen entfernten Browser, statt einen lokalen zu starten — der Browser-Download kann aus deinem CI-Image entfallen. Das spart meist mehr Build-Zeit, als die Automatisierung selbst braucht.
Warum muss ich browser.contexts()[0] verwenden?
connectOverCDP hängt sich an einen Browser, der bereits einen Context hat, und dort liegt dein wiederhergestelltes Profil. Ein newContext() gibt dir einen zweiten, leeren — deine Cookies sind da, nur nicht in dem Context, den du steuerst.
Funktionieren Traces und Video-Aufzeichnung weiterhin?
Tracing funktioniert, es ist eine clientseitige Funktion. Video-Aufzeichnung setzt voraus, dass der Browser lokal Dateien schreibt — nutze stattdessen unser Session-Replay; es zeichnet dasselbe auf, ohne ein gemeinsames Dateisystem zu brauchen.
Weitere Integrationen
- Puppeteer Puppeteer spricht CDP nativ.
- Selenium Selenium erreicht Browserberg über die CDP-Unterstützung von Chrome.
- Chrome DevTools Protocol Wenn du gar keine Treiber-Bibliothek willst: Eine Session ist ein einfacher CDP-WebSocket.
- LangChain LangChain-Agenten steuern Browserberg heute über das Playwright-Toolkit, gerichtet auf einen entfernten CDP-Endpunkt.
- MCP Ein Model-Context-Protocol-Server, der Browserberg-Sessions als Tools für jeden MCP-Client bereitstellt.
Zeig ein bestehendes Skript auf uns
Fünf Browser-Stunden kostenlos, keine Kreditkarte. Was lokal läuft, läuft hier mit einer geänderten Zeile.