Eine Low-Code-Plattform, die die Einfachheit von No-Code mit der Leistung von Full-Code verbindet 🚀
Jetzt kostenlos starten
Formularautomatisierung mit Puppeteer: Texteingabe, Formularausfüllen und Benutzersimulation
17. März 2025
8
min lesen

Formularautomatisierung mit Puppeteer: Texteingabe, Formularausfüllen und Benutzersimulation

Formularautomatisierung mit Puppeteer: Texteingabe, Formularausfüllen und Benutzersimulation 35
Georgi Miloradowitsch
Forscher, Texter und Usecase-Interviewer

Puppenspieler ist eine Node.js-Bibliothek, die Browser wie Chrome automatisiert und wiederkehrende Aufgaben wie das Ausfüllen von Formularen, die Texteingabe und die Benutzerinteraktion vereinfacht. Folgendes können Sie damit tun:

  • Formulareingaben automatisieren: Füllen Sie Textfelder, Dropdowns, Kontrollkästchen und sogar dynamische Formulare aus.
  • Simulieren Sie menschliches Tippen: Fügen Sie Verzögerungen, Korrekturen und Pausen für realistische Eingaben hinzu.
  • Umgang mit komplexen Formularen: Verwalten Sie Datumsauswahl, mehrstufige Formulare und Echtzeitvalidierung.
  • User-Interaktion: Simulieren Sie Mausbewegungen, Scrollen und Navigation.

Vorteile :

  • Sparen Sie Zeit, indem Sie die manuelle Arbeit um bis zu 50%.
  • Verbessern Sie die Genauigkeit, indem Sie menschliche Fehler eliminieren.
  • Skalieren Sie Workflows für mehrere Formulare gleichzeitig.
  • Senken Sie die Kosten durch die Automatisierung wiederkehrender Aufgaben.

Schnelles Beispiel:

await page.type('#username', 'exampleUser');
await page.type('#password', 'examplePass');
await page.click('#submit-button');

Ob Sie Anmeldeseiten, mehrstufige Formulare oder dynamische Inhalte automatisieren – Puppeteer bietet die Tools zur Vereinfachung Ihres Workflows. Bereit zum Einstieg? Sehen wir uns an, wie es funktioniert.

sbb-itb-23997f1

Verwenden Sie den Puppeteer-basierten Headless-Browser auf Latenode, um Formulareinreichungen zu automatisieren

Latenode bietet eine direkte Integration mit einer Puppeteer-basierten Headless-Browser-Integration zur Automatisierung von Formulareinreichungen, Daten-Scraping von Websites, Erstellen von Screenshots und vielem mehr. Fügen Sie Code beliebiger Komplexität hinzu oder nutzen Sie den KI-Assistenten zur Konfiguration des Knotens.

Verbinden Sie es mit beliebigen KI-Modellen, Datenbanken, CRM-Systemen und anderen Diensten, um Ihre Arbeitsabläufe zu verbessern, zu erweitern und zu beschleunigen. Nutzen Sie die Gelegenheit und testen Sie die Low-Code-Webautomatisierung auf Latenode. Probieren Sie JETZT den vorgefertigten Headless-Browser aus und haben Sie nie wieder Ärger mit der Installation und Konfiguration!

Grundlegende Formulareingabemethoden

In diesem Abschnitt wird erläutert, wie Puppeteer Texteingaben verarbeiten und das Tippen auf eine Weise simulieren kann, die sich menschlicher anfühlt.

Textfeldautomatisierung

Hier sind einige Methoden, mit denen Sie die Texteingabe mit Puppeteer automatisieren können:

Method Luftüberwachung Vorteile Einschränkungen
page.type() Allgemeine Eingabe Löst alle Tastaturereignisse aus Langsamer, aber imitiert echtes Tippen
page.keyboard.type() Schnelle Dateneingabe Direkte Eingabe von Tastenfolgen Schneller, überspringt aber einige Ereignisse
page.$eval() Massenaktualisierungen Legt Werte sofort fest Überspringt Eingabevalidierungsprüfungen

Zum Beispiel bei der Automatisierung eines Login-Formulars wie https://the-internet.herokuapp.com/loginkönnen Sie den folgenden Code verwenden:

await page.type('#username', 'tomsmith');
await page.type('#password', 'SuperSecretPassword!');
await page.keyboard.press('Enter');

Um die Eingabe natürlicher zu gestalten, können Sie Verzögerungen zwischen den Tastenanschlägen hinzufügen. Weitere Details hierzu finden Sie im nächsten Abschnitt.

Hinzufügen menschenähnlicher Tippmuster

Um das Tippen einer Person zu simulieren, können Sie variable Verzögerungen, Korrekturen und Pausen einführen. Die puppeteer-extra-plugin-human-typing Das Plugin ist zum Erstellen dieser Effekte hilfreich.

await page.type('#search-input', 'automation testing', { delay: 100 });

await page.typeHuman('[name="q"]', "Is a robot writing right now?", {
  backspaceMaximumDelayInMs: 1500,
  backspaceMinimumDelayInMs: 750,
  maximumDelayInMs: 650,
  minimumDelayInMs: 150
});

Diese Methode lässt die Eingabe natürlicher erscheinen, indem:

  • Anpassen der Tippgeschwindigkeit
  • Simulieren von Tippfehlerkorrekturen
  • Pausen zwischen Wörtern einfügen
  • Nachbildung eines realistischen Tastaturverhaltens

Für eine noch lebensechtere Interaktion:

await page.focus('#input-field');
await page.type('#input-field', 'Hello World');

Komplexe Formularautomatisierung

Aufbauend auf der grundlegenden Textfeldautomatisierung erfordern erweiterte Formulare wie Dropdown-Menüs, Datumseingaben und dynamische Formulare spezifische Ansätze. Wir zeigen Ihnen, wie Sie diese Komponenten effektiv nutzen können.

Menüs und Eingabesteuerung auswählen

Mit Puppeteer ist die Automatisierung von Dropdown-Menüs, Kontrollkästchen und Optionsfeldern ganz einfach. So geht's:

// Selecting a value from a dropdown
await page.select('#country-select', 'AUS');  // Selects "Australia"

// Interacting with a checkbox
await page.click('#terms-checkbox');

// Selecting a radio button
await page.click('[id=Mortgagees_0__MortgageeType][value=COR]');

„Locators kapseln die Informationen zur Auswahl eines Elements und ermöglichen es Puppeteer, automatisch zu warten, bis das Element im DOM vorhanden ist und sich im richtigen Zustand für die Aktion befindet.“

Automatisierung der Datumseingabe

Datumsauswahlen können unterschiedlich komplex sein. So behandeln Sie sowohl einfache als auch schreibgeschützte Datumsfelder:

// Typing directly into a simple date input
await page.type("#datepicker", "01/26/2025");

// Modifying a readonly date input
await page.$eval('#txt_FromDateText', el => el.removeAttribute('readonly'));
await page.type('#txt_FromDateText', '03/17/2025');

Für kalenderbasierte Datumsauswahlen:

await page.click('#calendar-trigger'); // Open the calendar
await page.waitForSelector('.calendar-grid'); // Wait for the calendar UI
await page.click(`[data-date="2025-03-17"]`); // Select the desired date

Dynamische Formularverarbeitung

Dynamische Formulare bringen oft Herausforderungen mit sich, wie Ladeverzögerungen, bedingte Felder und Echtzeitvalidierung. So bewältigen Sie diese:

Herausforderung Die Lösung Codebeispiel
AJAX-Laden Verwenden Sie explizite Wartezeiten await page.waitForSelector('.dynamic-field')
Bedingte Felder Überprüfen Sie die Sichtbarkeit await page.waitForSelector('#conditional-input:not([style*="display: none"])')
Validierung in Echtzeit Fehlerzustände überwachen await page.waitForFunction('document.querySelector(".error-message") === null')

Für Felder mit dynamischer Validierung:

// Wait for the input field to be ready
await page.waitForSelector('#dynamic-input');

// Enter data and wait for validation to complete
await page.type('#dynamic-input', '[email protected]');
await page.waitForFunction(
  selector => !document.querySelector(selector).classList.contains('error'),
  {},
  '.validation-indicator'
);

Die Handhabung mehrstufiger Formulare erfordert eine sorgfältige Navigation:

// Proceed to the next step
await page.click('#next-button');
await page.waitForNavigation();

// Accept confirmation dialogs
page.on('dialog', async dialog => {
  await dialog.accept();
});

Schließen Sie abschließend immer eine Fehlerbehandlung für unerwartete Probleme ein:

try {
  await page.waitForSelector('#dynamic-content', { timeout: 5000 });
} catch (error) {
  console.error('Dynamic content failed to load:', error);
}

Benutzerinteraktionssimulation

Durch die Erweiterung der Eingabeautomatisierung und die Simulation vollständiger Benutzerinteraktionen wird die Handhabung von Formularübermittlungsaufgaben verbessert. Puppeteer bietet Tools für präzise Mausaktionen und Navigation und eignet sich somit ideal für die Verwaltung komplexer Formularszenarien.

Maus- und Scroll-Aktionen

So können Sie realistische Mausbewegungen und Scrollen simulieren:

// Hover over an element
await page.hover('#form-element');

// Perform a delayed click
await page.click('#submit-button', { delay: 5000 });

// Smooth scrolling example
await page.evaluate(() => {
    window.scrollTo({ top: 500, behavior: 'smooth' });
});

Verfolgen Sie für unendliches Scrollen die Seitenhöhe und laden Sie Inhalte dynamisch:

await page.evaluate(async () => {
    await new Promise((resolve) => {
        let totalHeight = 0;
        const distance = 100;
        const timer = setInterval(() => {
            const scrollHeight = document.body.scrollHeight;
            window.scrollBy(0, distance);
            totalHeight += distance;

            if (totalHeight >= scrollHeight) {
                clearInterval(timer);
                resolve();
            }
        }, 100);
    });
});

Diese Techniken gehen über grundlegende Interaktionen hinaus, insbesondere beim Umgang mit mehrstufigen Formularen, die eine reibungslose Navigation erfordern.

Mehrstufige Formularnavigation

Bei der Automatisierung mehrstufiger Formulare ist die Steuerung benutzerähnlichen Verhaltens unerlässlich. Konfigurieren Sie für die Entwicklung den Browser so, dass er die Benutzeroberfläche anzeigt und Vorgänge verlangsamt, um das Debuggen zu vereinfachen:

const browser = await puppeteer.launch({
    headless: false,  // Display browser UI during development
    slowMo: 100       // Add a delay of 100ms between actions
});

Führen Sie variable Verzögerungen ein, um das natürliche Benutzerverhalten nachzuahmen:

Aktionstyp Verzögerungsbereich Implementierungsbeispiel
Mausbewegung 100–300 ms await page.waitForTimeout(Math.random() * 200 + 100)
Formulareingabe 50–150 ms await page.type('#input', 'text', { delay: Math.random() * 100 + 50 })
Seite scrollen 500–1000 ms await page.waitForTimeout(Math.random() * 500 + 500)

Wechseln Sie für die Produktion in den Headless-Modus (headless: true), um die Leistung zu verbessern. Die SauceDemo Automatisierungsbeispiel demonstriert die Eingabevalidierung durch die Ausrichtung auf .error-message-container Wähler.

Um modale Dialoge oder Popups zu verarbeiten, reagieren Sie basierend auf ihrem Inhalt:

page.on('dialog', async dialog => {
    const message = dialog.message();
    if (message.includes('confirm')) {
        await dialog.accept();
    } else {
        await dialog.dismiss();
    }
});

Diese Strategien stellen sicher, dass Ihre Automatisierungsabläufe sowohl effizient als auch realistisch sind.

Richtlinien zur Formularautomatisierung

In diesem Abschnitt werden die Grundlagen der Formularautomatisierung erläutert. Der Schwerpunkt liegt auf der Fehlerbehandlung und der Leistungssteigerung, um einen reibungslosen Ablauf Ihrer Arbeitsabläufe zu gewährleisten.

Fehlermanagement

Wasser Try-Catch-Blöcke um Fehler effektiv zu erkennen und zu behandeln:

try {
    await page.type('#username', 'testuser');
    await page.type('#password', 'password123');
    await page.click('#submit');
} catch (error) {
    console.error(`Form submission failed: ${error.message}`);
    await page.screenshot({ path: `error-${Date.now()}.png` });
}

Validieren Sie Ihre Formulare, indem Sie nach Fehlermeldungen suchen und erfolgreiche Übermittlungen bestätigen:

// Look for error messages
const errorMessage = await page.$('.error-message-container');
if (errorMessage) {
    const text = await page.evaluate(el => el.textContent, errorMessage);
    throw new Error(`Validation failed: ${text}`);
}

// Confirm successful submission
const success = await page.waitForSelector('.success-message', { timeout: 5000 })
    .catch(() => false);
if (!success) {
    throw new Error('Form submission timeout');
}

Legen Sie Timeouts fest, um zu verhindern, dass Ihr Skript auf unbestimmte Zeit hängen bleibt:

await page.setDefaultNavigationTimeout(30000);
await page.setDefaultTimeout(20000);

Sehen wir uns nun an, wie Sie die Leistung für eine schnellere und effizientere Automatisierung verbessern können.

Leistungstipps

Optimieren Sie Ihre Automatisierungsskripte mit diesen Techniken:

Technik Umsetzung Auswirkungen auf die Leistung
Wiederverwendung von Sitzungscookies Speichern und Wiederverwenden von Authentifizierungscookies Verkürzt die Ausführungszeit um 30 %
Ressourcenblockierung Blockieren Sie CSS-, Bild- und Schriftartanforderungen Beschleunigt die Ladezeiten um bis zu 50 %
Browser-Instanzverwaltung Wasser userDataDir für die Sitzungspersistenz Vermeidet wiederholte Anmeldungen
Selektives Elementwarten Wasser waitForSelector mit Sichtbarkeitskontrollen Reduziert Timeout-Fehler

Zum Beispiel, DataScrape-Lösungen wendete diese Strategien an und reduzierte die Zeit für die Verarbeitung von 50,000 Formulareinsendungen von 7,500 Minuten auf 5,833 Minuten – eine Verbesserung um 22 %.

Hier ist ein Beispiel für ein Produktions-Setup:

const browser = await puppeteer.launch({
    headless: "new",
    args: [
        '--disable-gpu',
        '--disable-dev-shm-usage',
        '--disable-setuid-sandbox',
        '--no-sandbox'
    ]
});

// Block unnecessary resources
await page.setRequestInterception(true);
page.on('request', request => {
    if (['image', 'stylesheet', 'font'].includes(request.resourceType())) {
        request.abort();
    } else {
        request.continue();
    }
});

Das Ausführen im Headless-Modus kann die Ausführung auch erheblich beschleunigen – Tests, die 5 Sekunden dauerten, wurden in nur 3 Sekunden abgeschlossen, eine Verbesserung um 40 %.

„Die Beherrschung der Fehlerbehandlung war nicht nur von Vorteil – sie war für den Aufbau effizienter und zuverlässiger Automatisierungs-Workflows unerlässlich.“ – Nathan, OneQuery

Verwenden Sie schließlich für dynamische Formulare intelligente Wartestrategien, um mit unvorhersehbarem Verhalten umzugehen:

// Wait for network activity to settle
await page.waitForNavigation({ 
    waitUntil: 'networkidle0',
    timeout: 30000 
});

// Ensure the element is visible before interacting
await page.waitForSelector('#submit-button', {
    visible: true,
    timeout: 5000
});

Zusammenfassung und nächste Schritte

Puppeteer vereinfacht die Formularautomatisierung und reduziert den manuellen Aufwand drastisch. So integrieren Sie Puppeteer in Ihre Arbeitsabläufe:

Implementierungsbereich Auswirkungen auf das Geschäft Erfolgsmetrik
Datensammlung Automatisierte Marktverfolgung in Echtzeit 60 % bessere Entscheidungsfindung
Formularverarbeitung Weniger manuelle Dateneingabe 30–50 % Effizienzsteigerung
Testen und Validieren Zuverlässigere Formulare Weniger Fehler
Performance Testing Glattere Benutzererfahrung Schnellere Ladezeiten

Diese Methoden können Ihnen dabei helfen, von der grundlegenden Automatisierung zu einem vollständig integrierten Puppeteer-Setup zu wechseln.

„Puppeteer ist mehr als nur ein Tool – es ist ein Tor zur Geschäftseffizienz. Durch die Automatisierung wiederkehrender Aufgaben, die Optimierung von Arbeitsabläufen und die Erfassung von Echtzeitdaten können Unternehmen im heutigen Wettbewerbsumfeld die Nase vorn behalten.“

Um die oben beschriebenen Vorteile zu nutzen, erkunden Sie diese Integrationsoptionen:

  • Low-Code-LösungenLatenode ermöglicht serverlose Puppeteer-Automatisierung ohne Programmierung. Sie können beispielsweise Workflows erstellen, um URL-Snapshots als PDFs zu speichern und automatisch in AWS S3-Buckets hochzuladen.
  • Erweiterte Funktionen: Verwenden Sie Puppeteer Extra-Plugins für Aufgaben wie anonymes Surfen. Für CAPTCHA-Herausforderungen verwenden Sie Dienste wie 2Captcha kann zu einer reibungslosen Automatisierung beitragen.
  • Unternehmensintegration: Organisationen wie TaskUs Puppeteer erfolgreich in ihre Geschäftstätigkeit integriert. Wie Manish Pandya, SVP of Digital bei TaskUs, erklärt:

„TaskUs nutzt PixieBrix, um unseren Kunden die einfache Flexibilität zu bieten, Benutzererfahrungen und Arbeitsabläufe zu verbessern. Es ist ein wichtiger Faktor bei der Verwirklichung unserer Vision.“

Konzentrieren Sie sich für eine zuverlässige Formularautomatisierung auf eine robuste Fehlerbehandlung, intelligente Wartestrategien und eine konsistente Überwachung.

Ähnliche Blog-Beiträge

Verwandte Blogs

Anwendungsfall

Unterstützt von
Formularautomatisierung mit Puppeteer: Texteingabe, Formularausfüllen und Benutzersimulation 40
Formularautomatisierung mit Puppeteer: Texteingabe, Formularausfüllen und Benutzersimulation 41
Formularautomatisierung mit Puppeteer: Texteingabe, Formularausfüllen und Benutzersimulation 42
Formularautomatisierung mit Puppeteer: Texteingabe, Formularausfüllen und Benutzersimulation 43