Forum: PC-Programmierung vb2010 Webbrowser -Textfeld ausfüllen


von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

ich möchte in den Netzwerk-hp officejet 8600 aus einer Datenbank 
Faxnummern automatisch eingeben.
mit diesem code
1
   Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
2
        Dim abfr, x, y, z, u, v
3
        'Clipboard.SetText(adrFax_dial.ToString)
4
        'WebBrowser1.ShowPropertiesDialog()
5
        abfr = WebBrowser1.Size.Height.ToString
6
        abfr = WebBrowser1.Height.ToString
7
8
        z = WebBrowser1.Size.Width
9
        u = WebBrowser1.Size.Height
10
        x = WebBrowser1.Location.X()
11
        y = WebBrowser1.Location.Y()
12
        WebBrowser1.Left = 0
13
        Me.Location = New Point(5, 5)
14
        WebBrowser1.Location = New Point(5, 5)
15
        Windows.Forms.Cursor.Position = New Point(x + 620, y + 345)
16
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 1)
17
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 1)
18
        Windows.Forms.Cursor.Position = New Point(400, 390)
19
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 1)
20
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 1)
21
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 1)
22
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 1)
23
        Threading.Thread.Sleep(150)
24
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 1)
25
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 1)
26
        mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 1)
27
        mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 1)
28
        Threading.Thread.Sleep(150)
29
30
        'Clipboard.GetText()
31
        'Text.StartsWith("99")
32
        Dim xxx As String
33
        'xxx = WebBrowser1.DocumentText()
34
        'WebBrowser1.DocumentText() = "99"
35
       'SendKeys.Send("99")
36
37
    End Sub
komme ich bis zur Selektion des Eingabefeldes.

Mit Ctr-V kann ich jetzt die gewünschte Eingabe per Hand vornehmen. Wie 
bekomme ich vb dazu, den Text im selektierten Textfeld zu ersetzen?

von Arc N. (arc)


Lesenswert?

Wenn das Webbrowser-Control das Dokument vollständig geladen hat, kann 
z.B. mit 
WebBrowser1.Document.GetElementById("xyz").SetAttribute(attrName, 
attrValue) der Inhalt verändert werden.

Das Anklicken von Buttons geht ebenso: Button finden und mit 
InvokeMember aufrufen (lassen)

https://msdn.microsoft.com/de-de/library/system.windows.forms.htmldocument.getelementbyid%28v=vs.110%29.aspx
https://msdn.microsoft.com/de-de/library/System.Windows.Forms.HtmlElement%28v=vs.110%29.aspx
https://msdn.microsoft.com/de-de/library/system.windows.forms.htmlelement.setattribute%28v=vs.110%29.aspx

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

Arc Net schrieb:


vielen Dank für die Antwort
1
  
2
3
<input id="contactPhoneNumberField-Inp" type="text" class="gui-input-field text" maxlength="55" alt="">
4
5
....
6
 WebBrowser1.Document.GetElementById("contactPhoneNumberField-Inp").SetAttribute("value", "555")
geht aber leider auch nicht

von grundschüler (Gast)


Lesenswert?

problem war das refresh des browsers. Mit einem timer geht es einen 
Schritt weiter, danke für den Hinweis von Arcnet
       Timer1.Stop()
        WebBrowser1.Document.GetElementById("contactPhoneNumberField-Inp").SetAt 
tribute("value",  "555")

von Arc N. (arc)


Lesenswert?

grundschüler schrieb:
> Arc Net schrieb:
>
>
> vielen Dank für die Antwort
>
1
> 
2
> <input id="contactPhoneNumberField-Inp" type="text" 
3
> class="gui-input-field text" maxlength="55" alt="">
4
> 
5
> ....
6
>  WebBrowser1.Document.GetElementById("contactPhoneNumberField-Inp").SetAttribute("value", 
7
> "555")
8
>
> geht aber leider auch nicht

Was geht nicht bzw. was liefert GetElementById zurück bzw. mal ansehen 
was alles in dem zurückgelieferten HtmlElement steht (Children, 
InnerHtml).

Edit: Statt Timer vielleicht auf das DocumentCompleted-Ereignis des 
WebBrowser-Controls reagieren

: Bearbeitet durch User
von grundschüler (Gast)


Lesenswert?

Arc Net schrieb:
> Edit: Statt Timer vielleicht auf das DocumentCompleted-Ereignis des

das hatte ich versucht. WebBrowser1_DocumentCompleted kommt nicht. Bei 
refresh springt der Webbrowser auf die Ausgangs-Url zurück. Deswegen die 
Bastelei mit Cursor/ Maustasten. Mit Timern funktioniert das ganze jetzt 
perfekt:
1
  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
2
        Timer1.Stop()
3
        If status = 0 Then
4
            setFaxDial()
5
6
        End If
7
8
        If status = 1 Then
9
            status = 2
10
            Timer1.Stop()
11
            Timer2.Enabled = True
12
            Timer2.Interval = 1000
13
            Timer2.Start()
14
            WebBrowser1.Document.GetElementById("contactPhoneNumberField-Inp").SetAttribute("value", Clipboard.GetText())
15
            status = 2
16
            'SendKeys.Send("{TAB}")
17
            'SendKeys.Send("{Enter}")
18
        End If
19
        If status = 3 Then
20
            Me.Finalize()
21
        End If
22
23
    End Sub
24
25
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
26
        If status = 2 Then
27
            status = 3
28
            Timer1.Start()
29
            SendKeys.Send("{TAB}")
30
            SendKeys.Send("{Enter}")
31
        End If
32
33
    End Sub
Danke für die Unterstützung

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.