Zum Inhalt springen

Browser und DOM

Diese Seite fasst die browsernahen Teile der g.*-API zusammen. Nutzen Sie sie, wenn ein Skript Seiten öffnen, DOM-Inhalte lesen, Elemente anklicken, Formulare ausfüllen oder Screenshots erstellen soll.

MethodeZweck
g.nav.navigateToUrl(url, options?)Aktiven oder angegebenen Tab zu einer URL navigieren
g.dom.waitForDomStable(options?)Warten, bis der DOM nicht mehr aktiv mutiert
g.dom.waitForElement(selector, options?)Auf ein passendes Element warten
g.page.getUrl(options?)Aktuelle URL lesen
g.page.getDom(options?)Aktuellen DOM/HTML-Inhalt lesen
await g.nav.navigateToUrl("https://example.com");
await g.dom.waitForDomStable();
const url = await g.page.getUrl();
const html = await g.page.getDom();
g.log("URL: " + url + ", DOM-Länge: " + html.length);

Einige Websites reagieren empfindlich auf Automatisierung. g.nav.navigateToUrl() kann mit Optionen wie stealth: true und detectRedirects: true verwendet werden, wenn ein Skript Weiterleitungen oder einfache Automatisierungserkennung berücksichtigen muss.

g.nav.navigateToUrl() meldet nur beobachtete WebView2-Fakten: started, completionObserved, contentLoadingObserved, navigationSucceeded, statusCode, statusSource, webErrorStatus, finalUrl, navigationId, redirectDetected und metaRefresh. Unbekannte Werte sind null. Bei waitForLoad: false bleiben Abschluss, HTTP-Status und Erfolg unbekannt. Der Rückgabewert enthält keine HTTP-Antwortheader.

MethodeZweck
g.tabs.getTabs()Alle Tabs auflisten
g.tabs.newBrowserTab(options?)Neuen Tab erstellen
g.tabs.closeTab(tabId)Tab schließen
g.tabs.closeAllTabs()Alle Tabs schließen
g.tabs.setActiveBrowserTab(tabId)Tab aktivieren

Viele browserbezogene Methoden akzeptieren browserTabId, damit ein Skript gezielt mit einem Tab arbeitet, zum Beispiel in Workern.

const tabId = await g.tabs.newBrowserTab({ name: "Example", url: "https://example.com" });
await g.dom.waitForDomStable({ browserTabId: tabId });
MethodeZweck
g.dom.getElements(selector, attributes?)Elemente als strukturierte Daten lesen
g.dom.extractContent(selector, options?)Textinhalt eines Elements extrahieren
g.page.executeJS(script, options?)JavaScript im Browserkontext ausführen
g.page.profileDocument(options?)Begrenzte Dokumentstruktur und exakte SHA-256-Digests messen
g.page.profileVisual(options)Exakte Navigation und Viewport mit begrenzten visuellen Metriken messen
g.page.compareVisualProfiles(left, right)Kompatible visuelle Profile vergleichen
const links = await g.dom.getElements("a", ["href", "textContent"]);
for (const link of links) {
g.log(link.textContent + " -> " + link.href);
}

g.page.executeJS() läuft im Seitenkontext. Verwenden Sie es, wenn eine DOM-Abfrage oder Seiteneigenschaft nicht über die höheren g.dom.*-Helfer abgedeckt ist.

Dokumentprofile nennen Knotenzahl, Tiefe, Text- und Titellänge, semantische Elementzahlen, wirksame Grenzen und Kürzungsmerkmale. Visuelle Profile erfordern die navigationId des Navigationsergebnisses und die erwartete Viewportgröße. Beide APIs liefern neutrale Messwerte: Eine fast weiße Seite, ein kleiner DOM oder ein großer Abstand klassifiziert eine Seite nicht als gültig, blockiert oder fehlerhaft. Prüfen Sie zuerst Kürzungen und Kompatibilitätsdiagnosen und wenden Sie dann Ihre eigene begrenzte Richtlinie an.

MethodeZweck
g.dom.click(selector, options?)Element anklicken
g.dom.enterText(selector, text, options?)Text in ein Eingabefeld schreiben
g.dom.selectOption(selector, value, options?)Option in einem Select-Feld wählen
g.dom.pressKey(key, options?)Taste senden
g.dom.scrollTo(selectorOrOptions, options?)Zu einem Element oder einer Position scrollen
await g.dom.enterText("#search", "Guida browser automation");
await g.dom.pressKey("Enter");
await g.dom.waitForDomStable();

Bei MCP-gesteuerten Browseraktionen gelten die Freigabe- und Domainregeln aus der MCP-Integration. Skripte, die Sie selbst ausführen, laufen unter Ihrer Kontrolle.

Guida kann den sichtbaren Viewport, einzelne Elemente und ganze Seiten erfassen. Screenshots sind nützlich für Diagnose, Nachverfolgungsdaten und sichtbare KI-Prüfungen.

MethodeZweck
g.screenshot.screenshot(path?)Sichtbaren Viewport erfassen
g.screenshot.screenshotElement(selector, path?, options?)Element erfassen
g.screenshot.screenshotFullPage(path?, options?)Ganze Seite erfassen

Viewport- und Geräteseinstellungen sind besonders wichtig, wenn Sie mobile Layouts oder Remote View prüfen. Remote Ops und Remote View haben eigene Protokolle für Viewport- und Streamingsteuerung.

async function main() {
await g.nav.navigateToUrl("https://example.com/products");
await g.dom.waitForDomStable();
const products = await g.page.executeJS(`
Array.from(document.querySelectorAll(".product")).map(card => ({
name: card.querySelector(".name")?.textContent?.trim(),
price: card.querySelector(".price")?.textContent?.trim()
}))
`);
for (const product of products) {
const key = product.name.toLowerCase().replace(/\s+/g, "-");
g.store.put("products", key, product);
}
g.log("Produkte gespeichert: " + products.length);
}