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
#include "wd_helper.au3"
#include "wd_core.au3"
Global $_WD_DRIVER
Local $sDesiredCapabilities
$_WD_DEBUG = $_WD_Debug_Info ; None ; Info
;$_WD_DEBUG = $_WD_DEBUG_None ;set to $_WD_DEBUG_None before compiling.?
$url = "https://autoit.de/wcf/login/?url=https%3A%2F%2Fautoit.de%2F"
$user = "benutzernamen"
$password = "Passwort1234"
SetupEdge()
_WD_Startup()
;Hide the WebDriver Console
_WD_ConsoleVisible(True)
;_WD_ConsoleVisible(False)
$sSession = _WD_CreateSession($sDesiredCapabilities)
_WD_Window($sSession, "Maximize", "{}")
_WD_Navigate($sSession, $url)
_WD_LoadWait($sSession, 1500)
Sleep(500)
_WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='username']")
ConsoleWrite("+ @error = " & @error & @CRLF)
$sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='username']")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement_user, 'value',$user)
Sleep(500)
EndIf
_WD_WaitElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='password']")
ConsoleWrite("+ @error = " & @error & @CRLF)
$sElement_user = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//input[@id='password']")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement_user, 'value',$password)
Sleep(500)
EndIf
;$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='btn_login']/form/section[1]/div/input[1]")
$sElement = _WD_FindElement($sSession, $_WD_LOCATOR_ByXPath, "//*[@id='btn_login']")
If @error = $_WD_ERROR_Success Then
_WD_ElementAction($sSession, $sElement, 'click')
EndIf
_WD_DeleteSession($sSession)
_WD_Shutdown()
Exit
Func SetupEdge()
Local $iPort = _WD_GetFreePort(5555, 5600)
If @error Then Return SetError(@error, @extended, 0)
_WD_Option('Port', $iPort)
_WD_Option('DriverParams', '--port=' & $iPort & ' --verbose --log-path="' & @ScriptDir & '\edge.log"')
_WD_Option('Driver', @ScriptDir&'/msedgedriver.exe')
$sDesiredCapabilities = '{"capabilities": {"alwaysMatch": {"unhandledPromptBehavior": "ignore", ' & _
'"ms:edgeOptions": {"excludeSwitches": ["enable-automation"], ' & _
'"useAutomationExtension": false, "args": ["start-maximized"]}}}}'
EndFunc
Alles anzeigen
Viele Grüße und vorab danke, Chris!