Webseite ausfüllen

Ichbinalex

Erfahrenes Mitglied
Hallo ich habe einen Webbrowser mit VB2008 erstellt nun möchte ich gerne, dass er auf der Webseite das Textfeld mit dem Namen "namen" ausfüllt und anschließen einen Button auf der Webseite "button" drückt. Ist dies möglich? und wenn ja wie?
 
Hi

Über das Property Document kommst du an das Html-Dokument und kannst darin die entsprechenden Html-Elemente suchen und ansprechen.

PS: nicht spammen! Wenn keiner im Forum ist, der die Antwort weiß, antwortet auch keiner ;)
 
Hi.

Das Webbrowser "Control" sollte erstmal alles geladen haben:


Code:
    Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        If Me.WebBrowser1.ReadyState = WebBrowserReadyState.Complete Then
            'geladen = True
        End If
        Do While Me.WebBrowser1.ReadyState = WebBrowserReadyState.Loading And Me.WebBrowser1.IsBusy = True
            Application.DoEvents()
        Loop

    End Sub

Wenn Das dann Geschehen ist mit einer schleife über die "INPUT" elemente gehen und diese evtl. mit ihrem "Namen" oder "ID" aufrufen, und befüllen mit den Daten.

Die Schleife (hier über alle Links):

1. Variante:
Code:
For Each T As HtmlElement In Me.WebBrowser1.Document.Links
Me.CheckedListBox2.Items.Add(T.GetAttribute("href").ToString)
Next

2. Variante:
Code:
For i as Integer = 0 to Me.WebBrowser1.Document.Links.Count -1
Me.CheckedListBox2.Items.Add(Me.WebBrowser1.Document.Links.Item(i)).GetAttribute("href")
Next


Gibt es Formulare oder Frames, muss das berücksichtigt werden.
Was aber zu erwähnen ist, das Inhalt einer (z.B.:) Tabelle als Ausgangspunkt für die Schleife heran gezogen werden kann.
Konkreter: Alles Textfelder der Tabelle "links" - die Tabelle hat hier eine "ID" im HTMLTag -

Code:
 Dim i As Integer = 0
        For i = 0 To Me.WebBrowser1.Document.GetElementById("links").Children.Count - 1
            Me.ComboBox1.Items.Add(Me.WebBrowser1.Document.GetElementById("links").Children.Item(i).InnerText)
        Next

Es werden nicht alle Felder der Seite sondern nur ein Teilbereich berücksichtigt.
Was noch zu erwähnen ist, wenn ib der Tabelle auch andere "Kinder" - Elemente sind werde dies dann mit gezählt.
Abhilfe ist die Schleife mit Filter erweitern.
Code:
 If Me.WebBrowser1.Document.GetElementById("links").Children.Item(i).GetAttribute("A") Then
                'nehme das Hyperlink Element etc.....
            End If

Wie ein HTMLTextfeld mit Text füllen mit VB und WebbrowserControl:

Code:
 'Me.WebBrowser1.Document.Body.Document.GetElementById("strasseeingabefeld").SetAttribute("value", "Hauptstrasse") 'Strasse

Hier ist das Textfeld mit einer "ID" versehen und wird so angesprochen.
Wenn das Textfeld keine "ID" oder "Name" Eigenschaft hat, muss die HTML Struktur durchsucht werden.

TIPP: suchen und durchzählen Lassen, dann das Element mit dem Index ansprechen ---.Item(index).SetAttribute("value","MeinText")

Das absenden des Formulars ( click auf Button in HTML mit VB und WerbbrowserControl)

Code:
Me.WebBrowser1.Document.GetElementById("Submit").InvokeMember("click")

und der Doppelclick in einem Option Feld (Listbox)

Code:
Me.WebBrowser1.Document.GetElementById("MeineAuswahlliste").GetElementsByTagName("option").Item(1).InvokeMember("ondblclick")

Anmerkung, geht bei mir nicht immer mit dem Doppelclick, noch nicht geforscht....

So genug Blasen an den Fingerkuppen......

Hoffe konnte Helfen.....

c.u. Joshi aus HH
 
Zurück