Quote:
Originally Posted by N.E.O.
Danke
Eine Frage habe ich noch:
Wenn ich über den WebBrowser einen Text an eine unbekannte ElementID schicken will, wie mache ich das?
Ansatz:
|
Wie meinst du das ?
Du musst schon iwelche Infos über das Element haben, welches du ansteuern willst.
Nehmen wir die epvp Hauptseite als Beispiel.
Nach
HtmlElement.Name kannst du nur suchen wenn die Variable im HTML Tag auch genutzt wird bzw ein Wert für sie vergeben wurde. Wie z.B. hier :
Code:
<form id="searchform" action="http://www.elitepvpers.com/search/" name="[B][COLOR="Orange"]searchform[/COLOR][/B]" method="get">
Hierbei würdest du bei
HtmlElement.Name eben den Wert "
searchform" finden.
Nehmen wir nun als Beispiel die Textbox auf der Hauptseite von epvp wo der Benutzername eingetragen wird :
Code:
<input type="text" onfocus="if (this.value == 'Benutzername') this.value = '';" value="Benutzername" accesskey="u" size="18" id="navbar_username" name="[COLOR="#ffa500"][B]vb_login_username[/B][/COLOR]" style="font-size: 11px;"/>
Hier hast du als Elementname den Wert
vb_login_username.
Das heisst du könntest nun mit folgendem einen Wert in die Textbox schreiben ohne das du die ElementID kennst.
Code:
Dim myElement As HtmlElement
For Each myElement In WebBrowser1.Document.All
If myElement.Name.Equals("vb_login_username") Then
myElement.InnerText = "MyUsername"
End If
Next
Wobei das schon wieder hirnrissig ist, da du ja den Elementnamen kennst.
Allein wenn du den schon zu 100% kennst kannste auch gleich folgendes machen :
Code:
WebBrowser1.Document.All.GetElementsByName("vb_login_username")(0).InnerText = "Ohnoes"
Wobei
GetElementsByName dir ein Array zurückliefert mit allen Elementen deren Name "vb_login_username" ist. Aller Wahrscheinlichkeit nach gibts davon nur eins daher steuere ich direkt
(0) an.
Eine weitere Möglichkeit wäre, dass du einfach darauf vertraust, dass der Ersteller der Seite (oder des Forums oder ka was du da ansteuerst im Browser) die Elemente auch wirklich benannt hat. Wenn du zb nun weisst du willst den Usernamen irgendwo eintragen aber kennst nicht die genaue Zusammensetzung der ElementID bzw des Elementnamen. Hierbei kannst du folgendes machen :
Code:
Dim myElement As HtmlElement
For Each myElement In WebBrowser1.Document.All
If myElement.Name.Contains("username") And myElement.TagName.ToLower.Equals("input") And myElement.GetAttribute("type").ToLower.Equals("text") Then
myElement.InnerText = "MyUsername"
End If
Next
Hierbei werden halt alle Elemente des Dokuments durchsucht und es wird geprüft ob in irgend einem der HTML Tags, das Attribut name den String "username" enthält. Weiterhin wird geprüft ob es sich dabei um ein "input"-Element handelt, also ein Eingabefeld. Darüberhinaus muss noch überprüft werden ob es sich um ein Textfeld handelt. Genau dies macht
myElement.GetAttribute("type").