Forms.WebBrowser als “Headless Browser” um JavaScript auszuführen


Leider habe ich keinen Headless Browser (Browser ohne GUI) für C# finden können der auch das Ausführen von einfachem, JavaScript unterstützt um z.B. einfache DOM Manipulationen nach dem Laden des Dokuments durchzuführen. Daher habe ich am Ende auf das Control “System.Windows.Forms.WebBrowser” zurückgegriffen.

Aber leichter gesagt als getan, denn die größten Probleme hatte ich hier meinen HTML Text der aus einem String kommt im Browser zu laden.

using WebBrowser = System.Windows.Forms.WebBrowser;

//Unseren Browser initialisieren 
WebBrowser browser = new WebBrowser();
//Unser HTML Dokument laden welches wir im Browser manipulieren wollen
string html = “dein html Dokument <html…”;

//Erst die "Blank" Seite laden
browser.Navigate("about:blank");
//Dann kann man das Dokument auch in unseren Browser laden
browser.Document.Write(html);
//Im HTML Dokument gibt es eine Funktion die "Onload" heißt, diese wird hier aufgerufen
//und diese manipuliert den DOM entsprechend
browser.Document.InvokeScript("OnLoad");
//so kann der Manipulierte DOM entsprechend abgerufen werden.
var manipulatedDom = browser.Document.GetElementsByTagName("html")[0].InnerHtml;

Wie man sieht kann man mit dem Forms.WebBrowser Element ebenfalls einfaches JavaScript ausführen. Leider weiß ich nicht wie es sich verhält wenn man Altert Boxen oder ähnliches verwendet, aber für einfache DOM Manipulationen reicht es auf jeden fall aus, bei mir war jeglicher JavaScript Code direkt im HTML Dokument eingebettet.

Wenn jemand einen guten Headless Browser für .NET kennt der auch mit JavaScript umgehen kann, dann würde ich mich natürlich über einen entsprechenden Link freuen.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s