Automatischer Login via Edge nicht möglich

  • Hallo zusammen,

    Ich will einen automatischen Login über ein Script starten.

    Bis ca. August lief das ohne Probleme, dann war durch ein Update von Edge bzw dem webdriver dies nicht mehr möglich.


    Aktuell habe ich das Script wieder anpassen können, und es funktioniert wieder, aber nur ganz kurz.

    Sobald der Login erfolgreich durchgeführt wurde, beendet sich MS Edge automatisch. Genau gesagt, die Zeile "_WD_DeleteSession($sSession)" beendet diesen.

    Wie ich im Internet gelesen habe, sollte diese Zeile aber im Script bleiben und ich meine vor August lief es trotz dieser Zeile.

    Jetzt meine Frage, kann ich auf diese Zeile verzichten, oder bekomme ich mittel- bzw langfristig dadurch Probleme?

    Als Beispiel habe ich mein Script auf diese Forumsanmeldung umgeschrieben und fülle nur die Felder Benutzername und Passwort aaus. Sobald das geschehen ist, wird Edge bei mir beendet.

    Edge und der Webdriver sind bei mir in der Version 130.0.2849.80 (Offizielles Build) (64-Bit)

    Hier das Script

    Viele Grüße und vorab danke, Chris!

    2 Mal editiert, zuletzt von SOLVE-SMART (11. November 2024 um 08:44)

  • Hi Chris_ , willkommen im Forum hier 👋 ,

    stelle doch bitte mal debug full ein $_WD_DEBUG = $_WD_DEBUG_Full in deinem Skript und führe es aus. Dann lass uns den Output der Konsole zukommen und wir können dir ggf. besser/genauer sagen wo dein Problem liegen könnte.

    Es ist schon so, dass die Reihenfolge der beiden Funktionen für den Teardown (für das saubere Abräumen der Ressourcen) so ist:

    AutoIt
    _WD_DeleteSession($sSession) ; Delete existing session.
    _WD_Shutdown()               ; Kill the web driver console app.

    So ist es u. a. auch in der wd_demo.au3 des Projektes zu sehen.
    Also stelle bitte mal so um, dass du dein Fehlverhalten mit MSEdge wieder bekommst und schicke uns den Output.

    Ich habe dein Skript mal ein klein wenig umgestellt - nix großes - doch es trägt ein wenig zur Übersicht bei:

    Persönlich würde ich es anders strukturieren, doch dies spielt erstmal keine Rolle. Bin gespannt was dein Konsolen-Output sagen wird.

    Viele Grüße
    Sven

  • Vielen Dank euch für die Antworten.


    Shutdown und DeleteSession zu drehen hatte ich ohne Erfolg zuvor versucht.

    @Sven, dein Script habe auprobiert, bis auf Zeile 5 und 6 unverändert gelassen.


    Hier alles, was in Output steht, Ergebnis war das gleiche, der Browser schließt sich wieder.

    Viele Grüße Chris!

  • Der Output sieht okay aus. Das der eine Error kommt ist klar, da der XPath falsch ist.

    Im folgenden Script mal eine Variante die funktionieren sollte (XPath in Zeile 49), wenn man die entsprechenden Abhängigkeiten des WebDrivers (bzw. des Projektes au3WebDriver) eingebunden/included hat.

    Ergebnis war das gleiche, der Browser schließt sich wieder.

    Alles klar, Danke Chris_ . Und was genau ist nun dein Problem? Willst du das sich der Browser nicht wieder schließt? Denn sobald deine Aktionen durchgeführt sind, also der Beispiel-Login, ist der Ablauf für den WebDriver gelaufen/fertig und dann folgt "Delete existing session" und "Kill the web driver console app".

    ❓ Ist deine Erwartung das der Browser dann offen bleibt oder wie?
    ⚠ Falls ja, dann nein so ist es nicht gedacht!

    Aber: Du kannst bspw. "_WD_DeleteSession($sSession)" weglassen, richtig. Unsauber aber geht. Du kannst auch bevor das Teardown folgen sollte, eine MsgBox anzeigen lassen (siehe Beispiel-Code diesen Posts hier in Zeile 55) und erst wenn diese bestätigt wird, beendet sich deine WebDriver Automation.

    Konsequenzen hat das Weglassen von _WD_DeleteSession nicht wirklich. Die Chrome- oder Edge-Daten, welche du für die Session benötigst, werden i.d.R. in TEMP geschrieben und dort kannst du sie entweder selbst wieder löschen oder sie werden bei "korrekten" Abbau der Session (Variante mit der MsgBox) automatisch gelöscht.

    -----------------------------------

    Ich hoffe dies hilft dir 🤝 .

    💡 Du kannst dich allerdings auch in eine bestehende Browser-Sitzung, des normalen Browsers (nicht des Browser-Drivers), in der du deine Tabs hast usw., verbinden.
    Siehe dazu FAQ im WebDriver Wiki .

    Viele Grüße
    Sven

  • Hallo SOLVE-SMART ,


    Sorry wenn man den Kern meiner Frage icht richtig verstehen konnte.

    Der Browser soll, nachdem die Anmeldung funktioniert hat, offen bleiben, mit dem Ziel, ganz normal im Browser zu arbeiten.

    Ich bilde mir ein, vor einiger Zeit hat das auch mit dem DeleteSession geklappt, aber gut möglich dass ich mich da auch täusche.

    Ich lasse das mal ohne das DeleteSession laufen und schaue wie es sich entwickelt. Wusste in dem Zusammenhang nicht, ob das die Prozesse alle so mitmachen, oder sich zügig was verabschiedet.


    Danke dir!


    Viele Grüße Chris

  • Der Browser soll, nachdem die Anmeldung funktioniert hat, offen bleiben, mit dem Ziel, ganz normal im Browser zu arbeiten.

    Okay, dann ist die vorgeschlagene Lösung mehr ein work-around als eine Lösung. Die Browser Automation, was die Handhabe mit WebDriver ist, sieht nicht vor das der Browser-Driver dauerhaft offen bleibt. Die Idee ist Tasks auszuführen und die Session dann wieder zu beenden.

    Für deinen Fall ist die Variante gedacht, dass man sich in ein vorhandenes Profil einklingt. Also eine Verbindung zu einer Browser-Session aufbaut, wie im WebDriver Wiki beschrieben (Link im post weiter oben). Dennoch: Am Ende alles nicht schlimm. Du kannst das so lassen, solltest nur ab und an mal deinen %TEMP% Ordner prüfen ob dieser auch wieder aufgeräumt wird oder sich unnötig viel Datenreste dort durch die Chromium (MSEdge) Sessions aufbauen und nicht mehr abräumen.

    Ich bilde mir ein, vor einiger Zeit hat das auch mit dem DeleteSession geklappt, aber gut möglich dass ich mich da auch täusche.

    Eigentlich nein. Vielleicht hattest du auch noch 'ne ziemliche alte Version, doch auch dies ist ja nun egal.

    ----------------------

    Freue mich das ich behilflich sein konnte. Alles Gute weiterhin mit au3WebDriver Projekt 😀.

    Viele Grüße
    Sven