Playwright Codegen-Testgenerator

Dieses Kapitel stellt Playwrights Kommandozeilen-Testgenerator Codegen vor, der Testcode durch Browseroperationen automatisch generiert.


Was ist Codegen

Codegen (Code Generator) ist Playwrights integriertes interaktives Testgenerierungstool.

Sie bedienen den Browser wie ein normaler Benutzer, und Codegen wandelt Ihre Operationen automatisch in Playwright-Testcode um.


Codegen starten

# 基本用法:打开一个 URL 并开始录制
npx playwright codegen https://www.example.com/

# 指定代码生成的语言(默认 TypeScript)
npx playwright codegen --target=javascript https://www.example.com/
npx playwright codegen --target=python https://www.example.com/

Nach dem Start werden zwei Fenster geöffnet:

  • Browserfenster: In diesem Fenster interagieren Sie mit der Seite
  • Playwright-Inspector-Fenster: Zeigt den generierten Code in Echtzeit an

Operationen aufzeichnen

Wenn Sie eine beliebige Operation im Browserfenster ausführen, generiert Codegen automatisch den entsprechenden Playwright-Code:

Navigation

Das Eingeben einer neuen URL in die Adressleiste und Drücken der Eingabetaste erzeugtpage.goto()Anweisung weglassen.

Click

Das Klicken auf ein beliebiges Element (Schaltfläche, Link, Menü) erzeugtpage.getByRole(...).click()oder ähnlichen Code zum Lokalisieren und Klicken.

Eingabe

Das Eingeben von Text in ein Eingabefeld erzeugtpage.getByLabel(...).fill(...)oderpage.getByPlaceholder(...).fill(...)。

Auswählen

Das Auswählen einer Option aus einem Dropdown-Menü erzeugtpage.getByLabel(...).selectOption(...)。

Kontrollkästchen

Das Aktivieren oder Deaktivieren eines Kontrollkästchens erzeugtpage.getByLabel(...).check()oder.uncheck()。


Automatische Auswahl des besten Locators

Codegen analysiert die Attribute von Seitenelementen und generiert einen Locator nach folgender Priorität:

  1. getByRole()— Element hat eine explizite ARIA-Rolle
  2. getByText()— Element hat klaren Textinhalt
  3. getByLabel()— Formularelement hat ein zugehöriges Label
  4. getByPlaceholder()— Eingabefeld hat einen Platzhalter
  5. getByAltText()— Bild hat ein alt-Attribut
  6. getByTestId()— Element hat data-testid
  7. getByTitle()— Element hat ein title-Attribut
  8. locator()— CSS-Selektor (letzte Möglichkeit)

Wenn Codegen mehrere übereinstimmende Elemente findet, optimiert es den Locator automatisch, bis das Zielelement eindeutig identifiziert werden kann.


Assertions generieren

In der Symbolleiste des Inspector-Fensters können Sie auf die Assertion-Schaltfläche klicken, um Assertion-Code zu generieren:

  • Sichtbarkeit prüfen— Nach dem Klicken ein Element auswählen, generiertawait expect(locator).toBeVisible()
  • Text prüfen— Generiertawait expect(locator).toHaveText(...)
  • Wert prüfen— Generiertawait expect(locator).toHaveValue(...)
  • Snapshot prüfen— Generiertawait expect(locator).toHaveScreenshot()

Gängige Codegen-Optionen

OptionBeschreibung
--target=javascriptJavaScript-Code generieren (standardmäßig TypeScript)
--target=pythonPython-Code generieren
--target=javaJava-Code generieren
--target=csharpC#-Code generieren
--save-storage=auth.jsonAuthentifizierungsstatus nach der Aufzeichnung speichern
--load-storage=auth.jsonVorhandenen Authentifizierungsstatus vor der Aufzeichnung laden
-o tests/test.spec.tsAusgabedatei angeben (standardmäßig Ausgabe im Terminal)
--viewport-size=375,812Benutzerdefinierte Viewport-Größe (mobile Geräte simulieren)
--device="iPhone 15"Gerätevoreinstellungen verwenden
--color-scheme=darkFarbschema angeben

Codegen vs. VS Code Recording: So treffen Sie die Wahl

MethodeAnwendungsfall
VS Code Record NewTägliche Testentwicklung; der Code gelangt direkt in den Editor und kann sofort geändert werden
Codegen-BefehlszeileSchnelles Prototyping, sprachübergreifende Codegenerierung, keine IDE-Abhängigkeit
Weitere Erweiterungen