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

Login Eintragen über DOM

Login Eintragen über DOM
28.05.2017 12:48:27
Florian
Hallöchen
Hier kommt die nächste DOM Frage.
Ich habe es geschafft in meinem Programm auszulesen ob ich überhaupt eingeloggt bin, oder nicht und dementsprechend Makros abzubrechen, oder nicht.
Nun wäre der nächste Schritt ein einloggen direkt aus Excel heraus.
Hier habe ich jedoch überhaupt keine Ahnung, wie ich dies bewerkstelligen soll.
Der Login soll auf folgender Seite passieren mittels gespeichertem Namen im Worksheet und Passwort aus einer Input Box, also mittels 2 Variablen.
https://de.battleknight.gameforge.com
Ich könnte mir vorstellen, dass jemand der sich mit dem DOM auskennt nicht viel experimenteren muss.
Sollten doch Zugangsdaten benötigt werden, gebt kurz bescheid, dann erstelle ich einen Textaccount.

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Login Eintragen über DOM
28.05.2017 15:38:12
Matthias
Moin!
Hier mal ungetestete Vorschläge. Da ich deinen Code nicht kenne, müsste du die Zuordnung zum IE Object noch anpassen. Ist ungetestet, wollte hier nicht den IE starten. VG

'erstmal anklicken, dass man schon angemeldet ist
Dim passwort As String
'den Anfang also: IEApp.Document muss du anpassen
IEApp.Document.getElementById("registerORlogin_1").Checked = True
Do While IEApp.Busy: DoEvents: Loop
'jetz deine Anmeldung ggf. nochanpassen
IEApp.Document.getElementById("loginUsername").Value = ActiveSheet.Cells(1, 1)
Do While IEApp.Busy: DoEvents: Loop
'ppasswort einlesen, könnte man noch ausbauen und prüfen, was eingegeben wurde
passwort = InputBox(, "Passwort")
IEApp.Document.getElementById("loginPassword").Value = passwort
Do While IEApp.Busy: DoEvents: Loop
'jezt anmelden anklicken
IEApp.Document.getElementById("loginButton").Click

Anzeige
AW: Login Eintragen über DOM
28.05.2017 16:31:41
Florian
Alles klar, das werde ich gleich ändern / testen.
Jedoch scheine ich leider noch einen Fehler in meiner "eingeloggt" Sub zu haben.
Diese wird über Workbook_open geöffnet:
Private Sub Workbook_Open()
Dim Datum As String
Datum = Format(Date, "dd.mm.yyyy")
Dim letztezeile As Long
With ThisWorkbook.Worksheets("Farm")
letztezeile = .Cells(Rows.Count, 6).End(xlUp).Row
'Abfrage ob es eine Spalte für heutige Einnahmen gibt
If .Range(cSchreibSpalte & "1").Value  Datum Then
.Columns(cSchreibSpalte & ":" & cSchreibSpalte).Insert Shift:=xlToRight, CopyOrigin: _
=xlFormatFromRightOrBelow
.Range(cSchreibSpalte & "1").Value = Format(Date, "dd.mm.yyyy")
.Range(cSchreibSpalte & letztezeile).Formula = "=SUM(" & cSchreibSpalte & "2:" &  _
cSchreibSpalte & letztezeile - 1 & ")"
End If
End With
Application.Wait (Now + TimeValue("00:00:02"))
Call eingeloggt
End Sub
Der Code ist dann der folgende:

Option Explicit
Public Sub eingeloggt()
Dim Server As Long
Dim URL As String
Dim oIE As Object
Dim knotenAst As Object
Dim bolLogin As Boolean
Server = ThisWorkbook.Worksheets("Einstellungen").Range("B1")
URL = "https://s" & Server & "-de.battleknight.gameforge.com/world"
'Internetexplorer starten
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = False
oIE.Navigate URL
' Warten, bis die Seite geladen ist
Do While oIE.busy: DoEvents: Loop
Set knotenAst = oIE.document.GetElementsByClassName("startFields")(0)
If Not knotenAst Is Nothing Then
bolLogin = False
Else
bolLogin = True
End If
'Explorer beenden
oIE.Quit
Set oIE = Nothing
ThisWorkbook.Worksheets("Einstellungen").Range("B6") = bolLogin
End Sub
Im eingeloggten Zustand ist alles tutti.
Im ausgeloggten Zustand bekomme ich manchmal den Fehler 438 (Objekt unterstützt Eigenschaft oder Methode nicht)
Die Stelle Set knotenAst ist dabei gelb.
Jedoch kann ich mir dies nicht erklären, denn wenn ich nicht eingeloggt bin (und die oben gepostete Seite geladen wird - was IMMER der Fall ist) muss das Objekt knotenAst doch gebildet werden können.
Wo ist denn hier mein Denkfehler?
Anzeige
AW: Login Eintragen über DOM
28.05.2017 16:48:12
Florian
um nochmal zum Login zu kommen.
Ich habe deinen Code minimal geändert.
Die Zugangsdaten werden eingetragen, aber der letzte klick auf "Login" findet nicht statt.
Public Sub einloggen()
Dim passwort As String
Dim username As String
Dim URL As String
Dim oIE As Object
URL = "https://de.battleknight.gameforge.com"
username = "RitterRitter"
passwort = "123456"
'Internetexplorer starten
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = True
oIE.Navigate URL
'Warten bis Seite geladen ist
Do While oIE.Busy: DoEvents: Loop
oIE.Document.getElementById("registerORlogin_1").Checked = True
'jetz deine Anmeldung ggf. nochanpassen
oIE.Document.getElementById("loginUsername").Value = username
Do While oIE.Busy: DoEvents: Loop
'ppasswort einlesen, könnte man noch ausbauen und prüfen, was eingegeben wurde
oIE.Document.getElementById("loginPassword").Value = passwort
Do While oIE.Busy: DoEvents: Loop
'jezt anmelden anklicken
oIE.Document.getElementById("loginButton").Click
End Sub
Habe einen Testaccount RitterRitter pw 123456 erstellt und die Daten ins Makro eingetragen.
Auch hier tritt aber manchmal der Fehler aus meinem letzten Post auf.
Könnte das irgendwie mit einer nicht vollständig geladenen Seite zusammen hängen?
Anzeige
AW: Login Eintragen über DOM
28.05.2017 17:24:47
Matthias
Hallo! Ansonsten teste beim Click mal folgendes:
dim test
set test = oIE.Document.getElementById("loginButton")
test.click
Zum anderen Problem kann ich nichts sagen. Evtl. zweimal die Zeile aufrufen, damit der Cde auchwikrlich fertig ist.
Do While oIE.Busy: DoEvents: Loop
Oder mal Schrittweise mit F8 durchgehen und probieren, ob du es reproduzieren kannst und was dann auf der IE Seite anders aussieht. Bzw. wenn der Fehler auftritt, schaue dir mal den Quelltext der Seite an.
VG
AW: Login Eintragen über DOM
28.05.2017 17:29:11
Florian
Macht leider keinen Unterschied.
Der "KlicK" findet nicht statt.
AW: Login Eintragen über DOM
28.05.2017 18:48:30
Florian
Macht leider keinen Unterschied.
Der "KlicK" findet nicht statt.
Anzeige
AW: Login Eintragen über DOM
03.06.2017 18:43:44
Zwenn
Hallo Florian,
Deine neue Frage ist mir völlig durchgegangen die Woche über. Falls Du das hier noch liest (Thread verschwindet morgen im Archiv).
Der "Klick" kann auf der Seite niemals funktionieren, weil es sich bei dem Login Button um keinen Button als Formularelement handelt ;-) Deshalb gibt es die Methode click gar nicht für ihn. Das ist ein Link, der als solches aber nicht direkt angegeben ist.
Du musst also rausfinden, was der folgende Codeschnipsel auslöst. Ich denke mal, das dürfte mit Wireshark am einfachsten gehen. Sprich, Du musst Deinen Netzwerkverkehr mitschneiden, wenn Du einen Login durchführst und dann nachsehen, was weggeschickt wurde, als Du den Button angeklickt hast.

[a href="#" id="loginLink" class="startButton" tabindex="5"]
[span id="loginButton"]Login[/span]
[/a]
Viele Grüße,
Zwenn
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige