connor1980
Goto Top

Powershell - Fehler bei der Auswahl eines Feldes im IE

Ich hatte vor einem halben Jahr schonmal angefangen den in der c't 4/10 abgedruckten Artikel "Autopiloten fürs Web" durchzuarbeiten.
Ziel war es per PS meine e-Plus Rechnungen automatisiert herunterzuladen.

Nun habe ich damals aber bei einem Fehler aufgehört und mich nu wieder drangegeben, komme aber nicht weiter.

Als Unterbau dienten mir ein Win7Ult x64 sowie Win7Pro x86.

Das Script sieht wie folgt aus:
--- Snipp ---
#ruft den IE auf
$ie=New-Object -comobject InternetExplorer.Application 
#true macht den IE sichtbar
$ie.visible=$true 
#Aufruf der Login Seite
$ie.Navigate("https://www.eplus.de/login/login.asp")  
#WarteZeit, damit der IE Zeit zum starten hat
while($ie.busy){Start-Sleep 10}
 #Eingabefeld für den Benutzernamen befüllen
$ie.Document.getElementById("IDToken10L").value="BENUTZERNAME"  
#Eingabefeld für das Passwort befüllen
$ie.Document.getElementById("IDToken20L").value="PASSWORT"  
$ie.document.getElementsByTagName("img") | foreach{  
    if($_.alt -eq "Jetzt anmelden"){  
        $_.Click()
    }
}
--- Snapp ---
den folgenden Rest habe ich jetzt erstMal weggelassen ...

Nun bleibe ich nämlich dummerweise immer an den Zeilen zur Benutzernamen und Passwort Eingabe hängen. Ich kann
getElementById("IDToken10L")
oder
getElementByName("IDToken1")
verwenden, als Anwtwort bekomme ich immer

Die value-Eigenschaft wurde in diesem Objekt nicht gefunden. Stellen Sie sicher, dass sie vorhanden ist und festgelegt werden kann.
Bei Zeile:1 Zeichen:43
+ $ie.Document.getElementById("IDToken10L"). <<<< value="BENUTZERNAME"  
    + CategoryInfo          : InvalidOperation: (value:String) , RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound
bzw. bei Verwendung von
getElementByName("IDToken1")
natürlich
+ $ie.Document.getElementByName("IDToken1"). <<<< value="BENUTZERNAME" 

Es sit hierbei egal ob ich das script in der ISE ausführen lasse oder an der Befehlseingabe reinkopiere.

Nun gibt es ein Script von jemand anderem, gepostet auf im heise-Bereich dazu, angepasst für e-plus, allerdings bringt mich weder dessen Lektüre auch nicht weiter, beim Start von meinem System bleibe ich mit dessen Script and er gleichen Stelle hängen.
Google hilft mir leider auch nicht weiter.

Statt der Anführungszeichen hatte ich auch mal erfolglos Hochkomma benutzt.

Vllt. hat jemand einen Geistesblitz oder ebenfalls dieses oder ein ähnliches Script gebaut. Über Hilfe wäre ich dankbar.

Grüße

Content-ID: 149005

Url: https://administrator.de/contentid/149005

Ausgedruckt am: 24.11.2024 um 02:11 Uhr

dog
dog 14.08.2010 um 20:33:17 Uhr
Goto Top
Dein Problem ist, dass das Feld nicht IDToken10L sondern IDToken1OL heißt.
Ja, das ist keine Null, sondern ein großes O.
Connor1980
Connor1980 14.08.2010 um 20:50:10 Uhr
Goto Top
Hallo dog,

danke, das ist zwar richtig, ändert aber leider nichts. Sonst müsste es ja auch mit Name("IDToken1") funktionieren.

Grüße
dog
dog 14.08.2010 um 21:10:41 Uhr
Goto Top
Sonst müsste es ja auch mit Name("IDToken1") funktionieren.

Wie kommst du darauf?
Name ist kein eindeutiges Attribut und eine Funktion getElementByName gibt es nicht.
Wenn man per Name sucht, dann bekommt man immer eine DOMNodeList und die Funktion ist getElementsByName

Und natürlich ändert es was: es funktioniert dann (ich habe es ja getestet).
Connor1980
Connor1980 15.08.2010 um 01:17:31 Uhr
Goto Top
Ok, das mit dem getElementByName war auch nur ein Versuch, nachd em Motto, wenns mit Id geht, warum nicht mit Name face-wink Das Name nicht eindeutig sein muss im Gegensatz zu Id leuchtet mir ein.

Aber an meinem Problem ändet es leider nichts, wenn ich hier bei mir im ISE das Script starte, bricht es jedesmal mit besagter Fehlermeldung ab, egal ob IDTokenl10L mit einer Null oder dem Buchstaben O.

So, ich habe jetzt mal die Powershell für XP runtergeladen und in einer VM (Win XP Pro) installiert, dort das Skript ausgeführt. Hier komme ich bis über den Login hinweg. Es hakt zwar danach aber das ist erstmal ok. Im Gegensatz zu den Win7 Maschinen wird der Login also durchgeführt. Da muss ich morgen mal weiterschauen.

Grüße

EDIT:
OK, das einzige was ich nicht probiert hatte, war die ISE als Administrator zu starten .... dann funktioniert auch der Login ... ich könnte mir jetzt in den allerwertesten beißen, naja, jetzt kann ich bei den ncäshten Problemchen im Script weitermachen.

P.S.: @dog: getElementByName wird von der c't im Script auch genutzt (funktioniert auch), nämlich nach dem Login zur Überprüfung ob es einen Logout-Knopf gibt ...