Playwright
Browser-Automatisierung per Skript für Tests, Screenshots und Netzwerk-Mitschnitte
Die Browser-Automatisierung, die endlich nicht mehr wackelt, und das Mitschreiben der Netzwerkaufrufe ist das versteckte Feature.
Stärken
- Eine API steuert Chromium, Firefox und WebKit
- Automatisches Warten beseitigt die meiste Flatterhaftigkeit älterer Werkzeuge
- Schreibt jede Netzwerkanfrage mit, du siehst die API hinter einer Web-App
- Codegen schreibt den ersten Entwurf eines Skripts, indem es dir beim Klicken zusieht
Schwächen
- Die Browser-Downloads sind groß und brechen, wenn Versionen zwischen Rechnern auseinanderlaufen
- Headless-Läufe werden von mancher Bot-Erkennung immer noch blockiert
- Die Python-Anbindung hinkt bei neuen Features hinter Node her
Am besten fürEntwickler, die einen echten Browser im Skript brauchen: eine Seite testen, eine Seite fotografieren oder sehen, was eine Web-App aufruft.
Playwright steuert einen echten Browser aus Code. Seite öffnen, klicken, tippen, warten, bis etwas erscheint, Screenshot machen, lesen, was die Seite übers Netz angefragt hat. Es kommt von Microsoft, ist kostenlos und läuft in Node, Python und ein paar anderen Sprachen.
So nutze ich es
Drei Aufgaben. Die erste sind Screenshots: Ein Skript öffnet eine Liste von Landingpages in Handy- und Desktop-Breite und speichert von jeder ein Bild, damit ich zwanzig Seiten in einem Ordner vergleiche statt in zwanzig Tabs. Die zweite ist das Testen meiner eigenen Seiten vor einem Deploy: jede Route öffnen, die Zeichenketten prüfen, die da sein müssen, abbrechen, wenn eine fehlt. Die dritte übersehen viele. Playwright schreibt jede Netzwerkanfrage einer Seite mit. Wenn eine Web-App keine öffentliche API hat, lasse ich den Browser einloggen und herumklicken, lese die Aufrufe, die er macht, und schreibe dann ein Skript, das diese Aufrufe direkt macht. Das hat mehr als eine mühsame Weboberfläche in ein paar Zeilen Python verwandelt.
Überrascht hat mich, wie viel weniger es flattert als die Werkzeuge davor. Das Warten ist eingebaut, ein Klick auf ein noch nicht gerendertes Element wartet, statt zu scheitern. Codegen, das deine Klicks in ein Skript aufzeichnet, liefert einen guten ersten Entwurf. Was mich nervt, sind die Browser-Binaries: groß, sie müssen zur Bibliotheksversion passen, und ein Rechner, auf dem beides auseinanderläuft, scheitert mit einer nichtssagenden Meldung. Manche Seiten mit Bot-Erkennung lehnen Headless-Browser auch ab, und die Umgehungen sind zerbrechlich. Die Python-Anbindung bekommt neue Features etwas später als Node.
Für wen es ist
Für jeden Entwickler, der einen Browser im Skript braucht. Wer End-to-End-Tests schreibt, hat hier die beste aktuelle Wahl. Wer nur HTML laden will, ist mit einem schlichten HTTP-Client leichter unterwegs und sollte den nehmen. Lass es, wenn die Zielseite aktiv gegen Automatisierung kämpft; du verbringst die Zeit dann mit Ausweichen statt mit der Aufgabe.



