vb2010 Webbrowser -Textfeld ausfüllen

Gast #3988556
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?
Angehängte Dateien:
#3988602
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
Gast #3988640
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
Gast #3988979
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")
#3988981
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
Gast #3989119
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren