Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1776to1780
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

Logindaten befüllen

Logindaten befüllen
28.08.2020 13:09:22
Alex
Schönen guten Tag zusammen,
habe mir einen Code zum automatischen aufrufen einer Website und dem automatischen Eintragen der Zugangsdaten gebaut. Seite wird aufgerufen, eMail wird korrekt eingetragen. Der Klick auf den "Weiter"-Button funktioniert ebenfalls. Ich bekomme dann aber die Fehlermeldung, dass ich mich mit einer korrekten Adresse anmelden solle. Wenn ich jedoch händisch in das Eingabefeld klicke und auf weiter funkioniert alles wunderbar.
D.h. ich bräuchte in meinem untenstehenden Code noch einen Befehl der den Cursor in der Eingabemaske platziert. So zumindest jetzt mein Gedanke. Freue mich über jede Hilfe:
With ie
ie.Visible = True
ie.navigate "Homepage"
Do While .readyState 4: DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:02"))
'set user name and password
Set htmlDoc = .document
Set htmlColl = htmlDoc.getElementsByTagName("INPUT")
Do While htmlDoc.readyState "complete": DoEvents: Loop
For Each htmlInput In htmlColl
If htmlInput.Name = "loginfmt" Then
htmlInput.Value = "eMail-Adresse"
(Hier bräuchte ich den Befehl)
Else
If htmlInput.Name = "pass" Then
htmlInput.Value = "PASSWORT"
End If
End If
Next htmlInput
'click login
Set login = htmlDoc.getElementById("idSIButton9")
'login.submit
Do While .readyState 4: DoEvents: Loop
Application.Wait (Now + TimeValue("0:00:02"))
login.Click
Set htmlDoc = Nothing
Set ie = Nothing
End With
Vielen Dank und viele Grüße Alex

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Logindaten befüllen
28.08.2020 13:20:36
Zwenn
Hallo Alex,
wie lautet die URL der Seite? Ich bin mir ziemlich sicher, dass ein HTML-Event ausgelöst werden muss, damit die eingetragene E-Mail-Adresse für die Seite überhaupt "sichtbar" wird.
Viele Grüße,
Zwenn
AW: Logindaten befüllen
31.08.2020 09:24:51
Alex
Guten Morgen Zwenn,
vielen Dank schon einmal für deine Antwort.
Die Website kann ich so leider nicht herausgeben.
Ich habe dir allerdings eine Datei mit den beiden Events angehangen. Kannst du hieraus etwas erkennen?
Userbild
Vielen Dank und Dir einen schönen Wochenstart!
Gruß Alex
Anzeige
AW: Logindaten befüllen
31.08.2020 09:37:19
Zwenn
Hallo Alex,
das ist schon die richtige Stelle. Aber klicke bitte auf das Wort event, dann geht ein Menü auf, in dem die zur Verfügung stehenden Events aufgelistet werden. Wenn die beiden Listen gleich sind (wovon auszugehen ist), reicht natürlich die Auflistung eines Event-Button. Falls die Liste scrollbar ist, mach einfach zwei Screenshots mit den entsprechenden Ausschnitten.
Viele Grüße,
Zwenn
AW: Logindaten befüllen
31.08.2020 10:36:50
Alex
Hi Zwenn,
anbei der Screenshot.
Userbild
Viele Grüße Alex
AW: Logindaten befüllen
02.09.2020 13:54:43
Zwenn
Hallo Alex,
hat nun etwas gedauert. Aber prinzipiell kannst Du Dich so einloggen. Es geht vor allem darum, wann welches HTML-Event ausgelöst wird. Welches für das Verhalten sorgt, dass Du willst, kann ich so nicht sagen. Ich gehe von change aus. Es kann auch sein, dass Du zwei Events triggern musst. Ich habe dazu etwas in die Kommentare zum Code geschrieben.

Sub LogIn()
Const url As String = "Homepage"
Const logInName As String = "Mail Adresse"
Const password As String = "Passwort"
Dim browser As Object
Dim htmlDoc As Object
Dim nodeUserName As Object
Dim nodePassword As Object
'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 nur notwendig, wenn dynamische Inhalte nachgeladen werden
Application.Wait (Now + TimeValue("0:00:02"))
Set htmlDoc = browser.document
'LogIn Namen eingeben
Set nodeUserName = htmlDoc.getElementByID("i0116")
'Ich gehe davon aus, dass das Change-Event getriggert werden muss
'Wenn das nicht klappt, probiere es mit dem Input-Event
'Oder dem Focusin-Event vor dem Setzen des Value
'und dem Focusout nach dem Setzen des Value
nodeUserName.Value = logInName
Call TriggerEvent(htmlDoc, nodeUserName, "change")
'Passwort eingeben
Set nodeUserName = htmlDoc.getElementByID("i0118")
'Gleiches Event-Verhalten hier
nodeUserName.Value = password
Call TriggerEvent(htmlDoc, nodeUserName, "change")
'Submit Button klicken
htmlDoc.getElementByID("idSIButton9").Click
'Warten bis die Seite nach dem LogIn geladen ist
'Ggf. anpassen
Application.Wait (Now + TimeValue("0:00:02"))
'Hier weiterer Code
End Sub
Mit dieser Prozedur triggert man beliebige HTML-Events. Sie basiert auf einer Idee von Anton aus diesem Forum:

Sub TriggerEvent(htmlDocument As Object, htmlElementWithEvent As Object, eventType As String)
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
Fehlerkorrektur
02.09.2020 13:59:09
Zwenn
Ich habe beim zweiten Triggern des Events vergessen das richtige HTML-Element an die Sub zu übergeben. Es muss dort natürlich heißen:
Call TriggerEvent(htmlDoc, nodePassword, "change")

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige