Ich arbeite an einem Winforms-Projekt in VS2017. Ich benutze das Geckofx45 Version 45.0.33 Nuget Paket vom 17.11.2017. Ich habe das Projekt für 32-Bit eingerichtet.GeckoFx45 Document Header, Körper sind leer
Die initializer ist codiert als: der
public MainForm(IConfigurationRoot configuration)
{
InitializeComponent();
...
WebDisplay = new GeckoWebBrowser()
{
Dock = DockStyle.Fill
};
WebDisplay.Navigate("https://www.google.com/");
while (WebDisplay.IsBusy)
Application.DoEvents();
GeckoHtmlElement payloadElement = WebDisplay
.Document
.GetHtmlElementById("viewport");
...
}
Lassen Sie brechen hier und beobachten Sie das Problem:
[STAThread]
static void Main()
{
...
Xpcom.Initialize("Firefox");
....
}
Der aktuelle Proof-of-Concept-Code in der Hauptform Konstruktor zur Zeit etwa wie folgt aussieht . Das Browser-Steuerelement wird in der erwarteten Form gerendert und zeigt die Google-Startseite. Wenn ich mit der rechten Maustaste auf das Steuerelement für Quelle anzeigen klicke, sehe ich den HTML-Code, den ich vom Navigationsziel erwarte. Alles checkt in der UX-Ebene aus.
Allerdings muss ich im DOM stöbern, und meine Abfragen kommen alle null zurück. Nicht nur GetHtmlElementById
kann nichts zurückgeben, weitere Exploration der Document
-Eigenschaft (oder die DomDocument
-Eigenschaft oder eines der anderen DOM-Accessoren, die ich gesehen habe) zeigen 2 Kinder auf der Wurzel (Header, Body), die beide sind leer: WebDisplay.Document.Body.HasChildNodes = false
.
Der Kicker ist, das Steuerelement ist klar Rendering der erwartete Inhalt; Es ist die API, die nichts als ein leeres Header- und Body-Element zeigt.
Was mache ich hier falsch? Vielen Dank!