Laden...

[erledigt] WebBrowser Objekt richtig benutzen: Button klicken, nachdem die Seite geladen wurde

Erstellt von tithon vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.397 Views
T
tithon Themenstarter:in
11 Beiträge seit 2012
vor 12 Jahren
[erledigt] WebBrowser Objekt richtig benutzen: Button klicken, nachdem die Seite geladen wurde

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

R
169 Beiträge seit 2007
vor 12 Jahren

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.

S
269 Beiträge seit 2010
vor 12 Jahren

Was ravel meint ist das WebBrowser.DocumentCompleted-Event

T
tithon Themenstarter:in
11 Beiträge seit 2012
vor 12 Jahren

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.

49.485 Beiträge seit 2005
vor 12 Jahren

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

T
tithon Themenstarter:in
11 Beiträge seit 2012
vor 12 Jahren

herzlichen dank an alle!!! das problem hat sich somit erledigt 😃