vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: HTML/Internet/Netzwerk · WebBrowser   |   VB-Versionen: VB.NET29.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 BernerBewertung:     [ Jetzt bewerten ]Views:  22.884 
ohne HomepageSystem:  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:

  1. ComboBox (cmbURL)
  2. Button (cmdAnzeigen)
  3. WebBrowser (WebBrowser1)
  4. TextBox (txtFormCount)
  5. Button (Button1)
  6. 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