Hey
ich hab ein WebBrowser Objekt.
Damit logge ich mich auf einer Seite mit Benutzername und Passwort ein.
Funktioniert soweit ganz gut!
Dann will ich dass er automatisch auf eine Unterseite geht und dort einen Button auch automatisch anklickt, etwa so:
Code csharp:
//wechseln zu einem anderen link der seite
webBrowser.Uri = new Uri("http://.../", UriKind.RelativeOrAbsolute);
webBrowser.Update();
//dort auf einen button klicken
try
{
foreach(HtmlElement elem in webBrowser.Document.All)
{
if(elem.GetAttributes("Value") == "NameDesButton")
{
elem.InvokeMember("Click");
}
}
}
catch{}
Wenn ich beide Aktionen unter 2Buttons in meiner Form mache (also 2 getrennte Aktionen) dann funktioniert das auch!
Nur wenn ich jetzt beide Aktionen in einen Button packe, dann funktioniert dies nicht.
Das HtmlElement ist dann irgentwie immer null.
Woran liegt das? Fehlt etwas?
Freundliche Grüße
Ich gehe davon aus, dass die Seite noch nicht fertig geladen ist.
Das Webbrowser-Control ein hat event, das Navigate_Complete oder so ähnlich heißt. Lass in dem Event auf den Button klicken.
Habs versucht.
webBrowser.Update();
webBrowser.DocumentCompleted += ...
und dann in der EventMethode den Button Click Methode.
Hat aber leider auch nicht funktioniert...das HtmlElement ist immer noch null beim Debugen.
Hallo tithon,
wenn man eine Web-Seite lädt, kommen oft mehrere DocumentCompleted-Ereignisse, z.B. wenn die Seite aus mehreren Frames oder allgemeiner gesagt mehreren Elementen besteht. Es reicht also nicht auf das erste DocumentCompleted zu warten, sondern du musst in den EventArgs (z.B. anhand der URL) nachschauen, ob es das DocumentCompleted für die Seite ist, die du laden willst.
herbivore