[Powershell] IE COM-Object "ENTER" in Input Box drücken evtl. JS/jQuery

schumischumi

Lt. Commander
Registriert
Dez. 2011
Beiträge
1.036
Hallo zusammen,

ich stehe vor dem Problem, dass ich eine interne Website automatisiert ansprechen muss und das Userinterface bisschen ekelhaft ist.
Und zwar versuch ich das Problem mit Powershell und dem IE COM-Object zu lösen.
Soweit alles gut, aber ich muss in einer Input-Box ENTER drücken, damit einweiters Auswahlfenster aufgeht und ich bekomme es nicht hin den Keypress zu senden.
Beispielcode bis wohin es funktioniert:
Code:
$IE = New-Object -com InternetExplorer.Application 
$IE.visible = $true; 
$IE.navigate("http://tolleseite.local") 

While ($ie.Busy) { Start-Sleep -m 10 }

$user = "username"
$pw = 'password'

$IE.Document.getElementByID("username").Value = $user
$IE.Document.getElementByID("password").Value = $pw
Start-Sleep 2
$btnSubmit = $IE.Document.getElementsByName("submit") | Where-Object {$_.value -eq 'Login'}
Start-Sleep 2
$btnSubmit.click()

$inputbox = $IE.Document.IHTMLDocument3_getElementByID('inputbox3')
$inputbox.value = 'tollertext'
#Hier bitte ENTER in $inputbox schicken.

Bisherige Optionen:
- onclick
Es ist weder Button noch Link sondern tatsächlich eine Input Box und irgendeins von x millionen JSs wartet auf ein Event
- ENTER senden via Winforms ([System.Windows.Forms.SendKeys]::Sendwait("{ENTER}");)
Soll headless remote laufen, daher funktionieren keine Forms

Eine Idee wäre noch irgendwie ein JS oder jQuery (wird über head geladen) Befehl senden, aber fehlt mir die Erfahrung.

Vielen Dank vorab!
 
Ohne zu wissen, wie der Quellcode genau aussieht auf Serverseite... wird's schwierig(er).

Gibt es ggf ein (HTML)Form um das Eingabedings? Was passiert "normal", wenn man Benutzer und Paßwort eingibt? Irgendwas muß ja die Website beim Klick machen.

Via Form.Submit() wäre eins. Oder falls es eine Form Action gibt, daß man dann einfach seinen Namen und PW ans Ziel durchgibt. Ich geh einfach mal davon aus, daß der Webserver diese Infos an irgendeiner Stelle entgegennimmt - und hier könnte man einhaken, ohne mit der Kuh ums Dorf laufen zu müssen.
 
Also über den Part mit Login und Submit bin ich hin drüber. das tut. Ist leider auch kein Form

es ist tatsächlcih eine Input-Box wo anscheinend irgendeins der 1000 automatisch generierten Javascripts horcht. sobald man ENTER drückt wird ein neues fenster aufgemacht.
gibts da nen Javascript profiler der aufzeichnet was gemacht wird? und falls ja wie könnte ich die JS Funktion von der Powershell aus ansprechen/aufrufen?

Sry ist keine inputbox sondern ne textarea

Code:
<textarea title="" class="text sr " id="textareaxy" style="..." rows="1" cols="20" wrap="off" arautoctt="400" arautocak="0" maxlen="200" arautoc="2" mstyle="2" armenu="XY:tollesmenu" arautocmb="1"></textarea>

evl von der logik her sowas, aber ich weiss nicht, wie ich zusätzlichen JS code unterbringe:

Code:
var field = document.getElementById("textareaid");
var keyEvent = document.createEvent("KeyboardEvent");
        keyEvent.initKeyboardEvent('keydown', true, true, window, 'Enter', null, null, false, null);
        field.dispatchEvent(keyEvent);


UPDATE:
Ich habe es jetzt über $ie.Document.parentWindow.execScript($js, "javascript") geschafft das oben beschriebene Javascript abzuschießen, aber jetzt macht das JS der Website zicken:
"Die Eigenschaft "altKey" eines undefinierten oder Nullverweises kann nicht abgerufen werden."

Hat wer ne Idee wie man da rangehen könnte?
 
Zuletzt bearbeitet:
Zurück
Oben