Automatisierter Login mit Powershell (Place Holder umgehen)

Homeboy12

Cadet 2nd Year
Registriert
Dez. 2019
Beiträge
22
Hallo, ich möchte den Login für diverse Seiten automatisieren.
Für die Umsetzung gibt es auch schöne Beiträge aus anderen Foren.
Quelle

Nur habe ich momentan so meine Schwierigkeiten mit Place Holdern.
Sobald ich beim Microsoft Login die E-Mail Adresse angebe, verschwindet der Place Holder nicht und ich kann nicht "weiter" klicken, da keine gültige E-Mail Adresse angegeben wurde.

Ich hatte versucht mit .focus() oder .click() das entsprechende Textfeld in den Focus zu nehmen, dies klappt aber nicht so wirklich.
Quelle

Weiß jemand wie ich den Place Holder beeinflussen kann?

PowerShell:
$user = $ie.document.getElementByID('i0116')
$user.click()
$user.focus()

$user.value = "$username"

$Link = $ie.document.getElementByID('idSIButton9')
$Link.click()

start-sleep -s 2



$passwort.click()
$passwort.focus()

$passwort = $ie.document.getElementByID('i0118')
$passwort.value = "$password"

$Link = $ie.document.getElementByID('idSIButton9')
$Link.click()
 
Du startest in PowerShell einen InternetExplorer. Die Login-Seite vom Microsoft wird anders aufgebaut, wenn du sie im IE öffnest. Der Placeholder ist dann nicht mehr nur das Placeholder-Tag, sondern ein eigenes div.

Ich habe jetzt nicht probiert, wie man das umgehen kann. Varianten, die mir einfallen:
  • UserAgentString modifizieren, sodass die Seite als Chrome-Variante geladen wird
  • placeholder-div löschen
  • im IE anschauen und ausprobieren, wie man das Feld befüllt
  • gezielt nach "microsoft login IE automation" suchen
  • einen anderen Browser in PowerShell verwenden, wobei ich nicht weiß, welche Browser sich in PS vernünftig einbinden lassen
 
Der Login funktioniert tatsächlich.
Bin grad noch am ermitteln an welcher stelle es eingesetzt werden muss.

PowerShell:
$ie = New-Object -ComObject 'internetExplorer.Application'
$ie.Visible= $true

$username="maxmustermann@outlook.de"

$password="passwort"

$ie.Navigate("https://login.live.com/login.srf?wa=wsignin1.0&rpsnv=13&rver=7.3.6963.0&wp=MBI_SSL&wreply=https%3a%2f%2fwww.microsoft.com%2fde-de%2f&lc=1031&id=74335&aadredir=1")
While ($ie.Busy -eq $true) {Start-Sleep -Seconds 3;}

$usernamefield = $ie.document.getElementByID('i0116')
$usernamefield.click()
$usernamefield.value = "$username"
$ie.Document.body.focus()
start-sleep -Seconds 1
$usernamefield.click()
start-sleep -Seconds 1
$ie.Document.body.focus()
$Link = $ie.document.getElementByID('idSIButton9')
$Link.focus()
$Link.click()
$ie.Document.body.focus()
start-sleep -Seconds 1
$ie.Document.body.focus()
$Link = $ie.document.getElementByID('idSIButton9')
$Link.focus()
$Link.click()
$ie.Document.body.focus()
Start-Sleep -s 2
$passwordfield = $ie.document.getElementByID('i0118')
$passwordfield.value = "$password"
$ie.Document.body.focus()
$CheckBox = $ie.document.getElementByID('idChkBx_PWD_KMSI0Pwd')
$CheckBox.focus()
$CheckBox.click()
$Link = $ie.document.getElementByID('idSIButton9')
$Link.focus()
$Link.click()
 
Zurück
Oben