PREISE
USE CASES
LÖSUNGEN
nach Anwendungsfällen
AI Lead ManagementFakturierungSoziale MedienProjektmanagementDatenmanagementnach Branche
MEHR ERFAHREN
BlogTemplateVideosYoutubeRESSOURCEN
COMMUNITYS UND SOZIALE MEDIEN
PARTNER
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:
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.
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!
In diesem Abschnitt wird erläutert, wie Puppeteer Texteingaben verarbeiten und das Tippen auf eine Weise simulieren kann, die sich menschlicher anfühlt.
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.
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:
Für eine noch lebensechtere Interaktion:
await page.focus('#input-field');
await page.type('#input-field', 'Hello World');
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.
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.“
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 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);
}
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.
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.
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.
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.
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.
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
});
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:
„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.