Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1728to1732
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Eingabefeld auf Homepage

Eingabefeld auf Homepage
30.12.2019 00:27:43
Rolf
Moin zusammen,
ich möchte auf meiner Homepage ein Eingabegeld automatisch füllen und abschicken.
Leider klappt 1) der Click im Code nicht und 2) wird die automatisierte Eingabe anscheinend nicht richtig erkannt (Test: Automatisierte Eingabe händisch bestätigen).
Wenn ich das ganze manuell mache, klappt es.
Weiß jemand Rat?
VG Rolf-Jan
Sub Webcrawler()
Dim IEApp As Object
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.navigate "www.price-robot.de"
Application.Wait (Time + TimeValue("00:00:10"))
Do: Loop Until IEApp.busy = False
Do: Loop Until IEApp.busy = False
Do: Loop Until IEApp.document.ReadyState = "complete"
IEApp.document.getElementByID("comp-k4rlxxdpinput").Select
IEApp.document.getElementByID("comp-k4rlxxdpinput").Value = "Test"
IEApp.document.getElementByID("comp-k4rlysbklink").Click
MsgBox ("Ende")
End Sub

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Eingabefeld auf Homepage
30.12.2019 07:03:34
Oberschlumpf
Hi Rolf Jan,
im Einzelschrittmodus funktioniert bei mir dein Code:
1. Instanz von IE wird erstellt + gestartet
2. Das Eingabefeld für Name wird ausgewählt
3. Das Wort "Test" wird eingetragen
4. Der Button wird "angeklickt"
Allerdings aktualisiert die Seite sofort + das Eingabefeld wird rot umrandet dargstellt.
Könnte daran liegen, weil "Test" als Name nicht gültig/vorhanden ist.
Andere Ideen hab ich aber auch nicht.
Ciao
Thorsten
AW: Eingabefeld auf Homepage
30.12.2019 14:17:51
Zwenn
Hallo Rolf Jan,
das Input-Tag hat mehrere Events. Damit der Name übernommen wird musst Du das onKeydown-Event triggern. Die manuelle Wartezeit für den kompetten Seitenaufbau kann auf 5 Sekunden abgesenkt werden, 3 waren zu kurz bei mir. Das der Button erfolgreich geklickt wurde habe ich am erscheinenden Datum festgemacht:

Sub PriceRobotLogIn()
Dim logInName As String
Dim browser As Object
Dim url As String
Dim knotenEingabe As Object
Dim knotenButton As Object
logInName = "Testname"
url = "https://www.price-robot.de/"
'Internet Explorer initialisieren, Sichtbarkeit festlegen,
'URL aufrufen und warten bis Seite vollständig geladen wurde
Set browser = CreateObject("internetexplorer.application")
browser.Visible = True
browser.navigate url
Do Until browser.ReadyState = 4: DoEvents: Loop
'Manuelle Pause, damit die Seite komplett zur Verfügung steht
Application.Wait (Now + TimeSerial(0, 0, 5))
'Das input-Tag sondieren
'[Fehlerprüfung temporär ausschalten, weil getElementByID() einen
'Laufzeitfehler wirft, wenn es die gesuchte ID nicht gibt]
On Error Resume Next
Set knotenEingabe = browser.document.getElementByID("comp-k4rlxxdpinput")
On Error GoTo 0
'Prüfen ob knotenEingabe erzeugt werden konnte
If Not knotenEingabe Is Nothing Then
'Das onKeyDown Event auslösen
Call TriggerEvent(browser.document, knotenEingabe, "onKeyDown")
'LogIn Namen eintragen
knotenEingabe.Value = logInName
Else
MsgBox "Eingabefeld für den LogIn Namen wurde nicht gefunden"
'Button klicken bringt nix, also Makro kontrolliert beenden
Exit Sub
End If
'Button sondieren
On Error Resume Next
Set knotenButton = browser.document.getElementByID("comp-k4rlysbklink")
On Error GoTo 0
'Prüfen ob knotenEingabe erzeugt werden konnte
If Not knotenButton Is Nothing Then
knotenButton.Click
Else
MsgBox "LogIn-Button wurde nicht gefunden"
End If
End Sub
Mit folgender Prozedur wird ein HTML-Event getriggert:

Sub TriggerEvent(htmlDocument As Object, htmlElementWithEvent As Object, eventType As String)
'Basierend auf einer Prozedur von Anton aus dem Herber Forum
'Für allgemeine Events angepasst nach Vorschlag von QHaar auf StackOverflow
Dim theEvent As Object
htmlElementWithEvent.Focus
Set theEvent = htmlDocument.createEvent("HTMLEvents")
theEvent.initEvent eventType, True, False
htmlElementWithEvent.dispatchEvent theEvent
End Sub

Viele Grüße,
Zwenn
Anzeige
AW: Eingabefeld auf Homepage
30.12.2019 22:49:09
Rolf
Moin,
danke Euch beiden!
Leider klappt es nicht.
Mal erscheint das Datum nach der Eingabe, mal nicht.
Die automatisierten Daten werde nicht in die Datenbank übernommen.
Nur wenn ich es manuell mache.
Trotzdem vielen Dank!
AW: Eingabefeld auf Homepage
31.12.2019 02:19:12
Zwenn
Hallo Rolf Jan,
wenn das Datum mal erscheint und mal nicht, dann ist die Seite nicht vollständig geladen und du musst die 5 Sekunden weiter erhöhen, bis es immer klappt. Mit der Aussage Die automatisierten Daten werde nicht in die Datenbank übernommen. kann niemand etwas anfangen, weil Du bisher nix gezeigt hast, wo irgendwelche Daten ausgelesen werden.
Etwas mehr Infos erwarte ich schon von jemandem, der sein Lvl im Programmieren als gut einschätzt.
Viele Grüße,
Zwenn
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige