0

Kann jemand in Powershell kennt mich sagen, warum ich nicht finden kann, das Username Eingabefeld mit seiner ID "user_name"? Ich habe das auf anderen Websites versucht und es hat funktioniert, aber für dieses eine weigert es sich einfach, es zu finden. Ich versuchte auch die IHTMLDocument3_getElementsByName Methode und auch IHTMLDocument3_getElementsByTagName auf der Suche nach Dingen wie "Eingabe" oder sogar "Div". Einige Div-Klassen tauchen auf, aber so viele fehlen dort und ich habe keine Ahnung, warum sie fehlen. Bitte zeig mir das Licht.Powershell IE Login-Automatisierung kann das Element nach ID nicht finden

#ID names 
$IDuserName = "user_name" 
$IDuserPass = "user_password" 

$url = "https://isssupport.service-now.com/" 
$ie = New-Object -com InternetExplorer.Application 
$ie.visible = $true 
$ie.navigate($URL) 

While ($IE.Busy -eq $true) {Start-Sleep -Milliseconds 1000} 

$ie.Document.IHTMLDocument3_getElementByID($IDuserName).Value = $userName 

Unten ist die HTML-Zeile für das Benutzername Eingabefeld

<input name="user_name" id="user_name" type="text" class="form-control" value="" autocomplete="off"> 
+0

'$ ie.Document.getElementByID ($ IDuserName) .Value = $ userName' in der Regel für mich funktioniert. –

Antwort

0

Die Seite mit vielen Javascript gebaut wird. Wenn Sie versuchen, die Seite ohne JavaScript in Ihrem Browser zu öffnen, sehen Sie nicht einmal das Login-Formular. Dies scheint das Problem für IE/PowerShell zu sein, das Formular und seine Elemente zu finden.

Allerdings könnten Sie den Internet Explorer-Fenster in den Vordergrund bringen und mit der Seite interagieren Systems.Windows.Forms wie folgt aus:

#ID names 
$IDuserName = "user_name" 
$IDuserPass = "user_password" 

$url = "https://isssupport.service-now.com/" 
$ie = New-Object -com InternetExplorer.Application 
$ie.visible = $true 

$wshell = New-Object -ComObject wscript.shell; 
$wshell.AppActivate($ie.Name) 
Start-Sleep -Milliseconds 500 

$ie.navigate($url) 

While ($ie.Busy -eq $true) {Start-Sleep -Milliseconds 1000} 

Add-Type -AssemblyName System.Windows.Forms 
[System.Windows.Forms.SendKeys]::SendWait('username'); 
[System.Windows.Forms.SendKeys]::SendWait('{TAB}'); 
[System.Windows.Forms.SendKeys]::SendWait('password'); 
[System.Windows.Forms.SendKeys]::SendWait('{ENTER}'); 

Darf ich fragen, was ist der Zweck des Skripts Sie bauen ist?

Mit freundlichen Grüßen

Günther

+0

Danke für diese Information Guenther, ich hätte ewig gebraucht um das herauszufinden. Ich bin erst kürzlich in das Unternehmen eingestiegen und habe damit beauftragt, einige der Service-Desk-Aufgaben zu automatisieren, so dass ich nur versuche, die beste Sprache für die Automatisierung zu finden. Powershell ist vielleicht nicht die einfachste Sprache für diese Aufgabe. –

+0

Hallo Michael, wenn du deine Frage beantwortest, markiere sie bitte als solche. Auch wenn Sie in Automatisierung sind, kann ich [sikulix] empfehlen (http://www.sikulix.com) – gpunktschmitz

Verwandte Themen