Rubrik: HTML/Internet/Netzwerk · WebBrowser | VB-Versionen: VB.NET | 29.02.08 |
Steuerelemente in Web-Formularen auslesen Mit diesem Code lassen sich von einer beliebigen Web-Seite alle Formular-Steuerelemente mit Namen, Typ etc. ermitteln und auflisten. | ||
Autor: Volkmar Berner | Bewertung: | Views: 22.923 |
ohne Homepage | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Wenn von VB Programmen aus Web-Formulare automatisch ausgefüllt werden sollen, die nicht selber programmiert wurden, stellt sich das Problem, dass die Namen und Datentypen des jeweiligen Formularfeldes mühsam aus dem HTML-Code ermittelt werden müssen.
Hier nun ein Tipp, mit dem dieses recht einfach geht:
Wir benötigen eine Oberfläche mit einem Button "URL_Laden", ein Text- oder Combo-Steuerelement, um die Web-Adresse einzugeben sowie ein WebBrowser Steuerelement. Dieser Konstrukt hat den Vorteil, dads über das Web-Steuerelement zum gesuchten Formular navigiert werden kann.
Erstellen Sie ein neues Windows.Forms Projekt und platzieren folgende Steuerelemente auf das Formular:
- ComboBox (cmbURL)
- Button (cmdAnzeigen)
- WebBrowser (WebBrowser1)
- TextBox (txtFormCount)
- Button (Button1)
- Multiline-TextBox (txtSteuerElemente)
Beim Klick auf den Button "cmdAnzeigen" soll zunächst die HTML-Seite geladen und die Anzahl der darin enthaltenen Formulare ermittelt werden:
Public Class Form1 Private bLoaded As Boolean = False
Private Sub cmdAnzeigen_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdAnzeigen.Click ' Anmelde-Seite laden bLoaded = False If Me.cmbURL.Text = "" Then Exit Sub WebBrowser1.Navigate(Me.cmbURL.Text) ' Warten, bis Webseite vollständig geladen wurde Do While Not bLoaded System.Windows.Forms.Application.DoEvents() Loop End Sub
Private Sub WebBrowser1_DocumentCompleted(ByVal eventSender As System.Object, _ ByVal eventArgs As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _ Handles WebBrowser1.DocumentCompleted Me.txtFormCount.Text = (WebBrowser1.Document.Forms.Count) ' ********************************************************* ' Webseite wurde vollständig geladen ' Diese Sub wird nach dem Laden von jedem Frame ausgelöst. ' Frage wann der letzte Frame geladen wurde ' Durch die If Abfrage ' ********************************************************* bLoaded = True End Sub
Der eigentliche Anzeige-Teil besteht aus einem Button mit dem die Procedure "procElementeAnzeigen" gestartet wird. Für das Ergebnis wird ein MutliLine-Text-Steuerelement benötigt. Wenn das Web-Steuerelement die richtige Seite anzeigt, wird mit dem Command-Button die Procedure gestartet. Dieser fragt alle Sub-Formulare der Seite ab und listet die Steuerelement auf.
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' alle Elemente anzeigen procElementeAnzeigen() End Sub
Public Sub procElementeAnzeigen() On Error Resume Next Dim AnzahlForm As Short Dim i As Int16 Dim AnzahlElemente As Int16 Dim y As Int16 Dim Element As String Me.txtSteuerElemente.Clear() AnzahlForm = WebBrowser1.Document.Forms.Count For i = 0 To AnzahlForm - 1 With WebBrowser1.Document.Forms(i) AnzahlElemente = .GetElementsByTagName("Input").Count Me.txtSteuerElemente.AppendText(vbCrLf & "Name Form: " & .Name) For y = 0 To AnzahlElemente - 1 With .GetElementsByTagName("Input").Item(y) Element = "Name: " & .GetAttribute("name") & _ "; Typ: " & .GetAttribute("type") & _ "; Value: " & .GetAttribute("value") & _ "; Checked: " & .GetAttribute("checked") & _ "; onClick: " & .GetAttribute("onclick") End With Me.txtSteuerElemente.AppendText(vbCrLf & Element) Next y End With Next i End Sub
End Class