Username u. Password automatisch übergeben (VBA)

Reinhold Burstädt @, Donnerstag, 14.01.2016, 16:40 (vor 1427 Tagen)

Ich habe ein Problem mit der Übergabe von Username und Password in die
geladene Webseite. Nachfolgender Code arbeitet bis zum öffnen der Webseite
normal, läuft dann allerdings auf einen Fehler, kann mir jemand helfen ?

Private Sub OK_Click()
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.navigate ("https://mein-senec.de/monitoring/index.html#/login, WindowState, 1")
Do
If IE.ReadyState = 4 Then
Exit Do
Else
DoEvents
End If
Loop

IE.Document.Forms(0).all("Loginmodule1_UserName").Value = "mein Username"
IE.Document.Forms(0).all("Loginmodule1_Password").Value = "mein Password"
IE.Document.Forms(0).submit

End Sub

Ich habe Access 2002 mit dem darin enthaltenen VBA.

Gruß
Reinhold Burstädt

Username u. Password automatisch übergeben

Martin Asal @, Donnerstag, 14.01.2016, 21:16 (vor 1426 Tagen) @ Reinhold Burstädt

Hallo Reinhold,

Das Problem liegt wohl nicht an VBA, sondern HTML+Javascript: Wenn ich das richtig sehe, wird der Seiteninhalt von https://mein-senec.de/monitoring/index.html#/login größtenteils per JS erstellt. Dein Code versucht, etwas mit HTML-Elementen namens "Loginmodule1_UserName" und "Loginmodule1_Password" zu machen - die es aber im Quellcode gar nicht gibt. Einfach nur mit IE.ReadyState = 4 warten, bis die Seite geladen ist, ist allem Anschein nach nicht ausreichend.

Am Einfachsten wäre es, die drei Formularelemente "Loginmodule1_UserName", "Loginmodule1_Password" und Submit nicht per Script zu erzeugen, sondern entweder fest in HTML zu codieren oder per VBA zu erzeugen.

Ansonsten kann ich nur raten, zu probieren, was du mit dem IE.Document-Objekt noch alles im Dokument findest. Wahrscheinlich gibt es so etwas wie IE.Document.getElementById, vielleicht kommst du damit weiter.

Martin

Username u. Password automatisch übergeben

Reinhold Burstädt @, Freitag, 15.01.2016, 11:39 (vor 1426 Tagen) @ Martin Asal

Hallo Martin,

vielen Dank zunächst für Deine Antwort. Da ich weder der HTML- als auch Java-Sprache
mächtige bin, habe ich natürlich Probleme mit der vorgeschlagenen Umsetzung.

Wenn Du einmal die in meinem VBA-Code angegebene Webseite öffnest erhälts Du die
Anmeldemaske mit Username und Password. Beim Anklicken mit der rechten Maustaste
auf diese Felder mit der Auswahl untersuchen erhalte ich folgenden Code angezeigt:

<input id="inputEmail" class .... (für Username)
<input id="inputPassword" class .... (für Kennwort)
<button class="btn btndefault" type="submit" .... (für Einloggen)

Kann ich damit vielleicht etwas anfangen und in den VBA-Code einbinden ?

Reinhold

Username u. Password automatisch übergeben

Martin Asal @, Freitag, 15.01.2016, 15:40 (vor 1426 Tagen) @ Reinhold Burstädt

Da ich weder der HTML- als auch Java-Sprache mächtige bin

Java ist nicht Javascript - Gummibärchen macht man ja auch nicht aus Gummi :-D

Ich kenne mich zwar mit HTML und Javascript aus, aber bin noch nie auf die Idee gekommen, den Internetexplorer als Objekt in VBA zu nutzen. Den IE wird es ja bekanntlich nicht mehr ewig geben - ob Edge soweit die gleichen Objekte hat, dass er für deine Zwecke kompatibel sein wird, weiß ich nicht. Insofern stellt sich ohnehin die Frage nach der Zukunftsfähigkeit deines Codes.

Wenn Du einmal die in meinem VBA-Code angegebene Webseite öffnest erhältst Du die Anmeldemaske mit Username und Password. Beim Anklicken mit der rechten Maustaste auf diese Felder mit der Auswahl untersuchen erhalte ich folgenden Code angezeigt:

Wenn du irgendwo auf dieser Seite einen Rechtsklick machst und dir den Quellcode anzeigen lässt, wirst du feststellen, dass er ganz anders aussieht. Die HTML-Elemente, die du beschrieben hast, werden eben erst nach dem Laden der Seite per Code (Javascript) generiert. Wenn du Pech hast erst, nachdem dein VBA-Code schon auf der Suche danach war...

Probiere mal folgendes:

IE.Document.Forms(0).all("inputEmail").Value = "mein Username"

Wenn es nicht klappt, versuche herauszufinden, wie genau die Unterobjekte des IE-Objekts aussehen (Der Objektkatalog ist bestimmt hilfreich). HTML besteht aus Elementen (entspricht ca. Objekten in VBA), und praktischerweise haben die für dich relevanten Elemente jeweils einen ID. Wie schon geschrieben, müsste wohl so etwas wie IE.Document.getElementById("inputEmail") möglich sein.

Martin

Username u. Password automatisch übergeben

Martin Asal @, Samstag, 16.01.2016, 10:37 (vor 1425 Tagen) @ Reinhold Burstädt

Mir kam da noch eine Idee: Bisher willst du das Formular öffnen, ausfüllen und abschicken. Statt dessen könntest du auch versuchen, gleich das ausgefüllte Formular abzuschicken:

IE.navigate ("https://mein-senec.de/monitoring/index.html#/login?Loginmodule1_UserName=A&Loginmodule1_Password=B, WindowState, 1")
 


oder

IE.navigate ("https://mein-senec.de/monitoring/index.html#/login?inputEmail=A&inputPassword=B, WindowState, 1")
 


Ich habe hier nur "A" bzw "B" als Feldinhalt eingefügt. Falls dort Leer- oder Sonderzeichen rein sollen, musst du sie maskieren. Scrolle dazu unter diesem Link so weit nach unten, bis du zu einer Tabelle kommst, in der "Zeichen" und "Zeichenkette für Codierung" aufgeführt werden.

Martin

Username u. Password automatisch übergeben

Reinhold Burstädt @, Sonntag, 07.02.2016, 12:10 (vor 1403 Tagen) @ Martin Asal

Hallo Martin,

hatte inzwischen wenig Zeit, so daß ich erst heute Deinen Vorschlag aufgenommen habe.
Leider bei beiden Varianten ohne Erfolg.
Wenn Du einmal die Webseite aufrufst und mit der rechten Maustate auf das Feld
E-Mail-Adresse klickst kann man mit 'Element untersuchen' sich den Code anzeigen
lassen. Vielleicht sind daraus Erkenntnisse zu gewinnen.

Gruß
Reinhold

Username u. Password automatisch übergeben

Martin Asal @, Sonntag, 07.02.2016, 17:17 (vor 1403 Tagen) @ Reinhold Burstädt

Wenn Du einmal die Webseite aufrufst und mit der rechten Maustate auf das Feld

E-Mail-Adresse klickst kann man mit 'Element untersuchen' sich den Code anzeigen
lassen.

Das hatte ich natürlich getan.

Möglicherweise ist es den Seitenbetreibern ja auch gar nicht so recht, wenn man sich automatisiert anmeldet. du solltest dort einmal um entsprechende Hilfe bitten. Das Problem ist ohnehin kein VBA-, sondern eher ein HTML-Problem. Oder eben, es ist vom Seitenbetreiber nicht gewollt.

Martin

RSS-Feed dieser Diskussion
powered by my little forum