Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell - Fehler bei der Auswahl eines Feldes im IE

Frage Entwicklung Batch & Shell

Mitglied: Connor1980

Connor1980 (Level 2) - Jetzt verbinden

14.08.2010 um 18:54 Uhr, 6666 Aufrufe, 4 Kommentare

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 ---
01.
#ruft den IE auf 
02.
$ie=New-Object -comobject InternetExplorer.Application  
03.
#true macht den IE sichtbar 
04.
$ie.visible=$true  
05.
#Aufruf der Login Seite 
06.
$ie.Navigate("https://www.eplus.de/login/login.asp") 
07.
#WarteZeit, damit der IE Zeit zum starten hat 
08.
while($ie.busy){Start-Sleep 10} 
09.
 #Eingabefeld für den Benutzernamen befüllen 
10.
$ie.Document.getElementById("IDToken10L").value="BENUTZERNAME" 
11.
#Eingabefeld für das Passwort befüllen 
12.
$ie.Document.getElementById("IDToken20L").value="PASSWORT" 
13.
$ie.document.getElementsByTagName("img") | foreach{ 
14.
    if($_.alt -eq "Jetzt anmelden"){ 
15.
        $_.Click() 
16.
17.
}
--- 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

01.
Die value-Eigenschaft wurde in diesem Objekt nicht gefunden. Stellen Sie sicher, dass sie vorhanden ist und festgelegt werden kann. 
02.
Bei Zeile:1 Zeichen:43 
03.
+ $ie.Document.getElementById("IDToken10L"). <<<< value="BENUTZERNAME" 
04.
    + CategoryInfo          : InvalidOperation: (value:String) [], RuntimeException 
05.
    + 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
Mitglied: dog
14.08.2010 um 20:33 Uhr
Dein Problem ist, dass das Feld nicht IDToken10L sondern IDToken1OL heißt.
Ja, das ist keine Null, sondern ein großes O.
Bitte warten ..
Mitglied: Connor1980
14.08.2010 um 20:50 Uhr
Hallo dog,

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

Grüße
Bitte warten ..
Mitglied: dog
14.08.2010 um 21:10 Uhr
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).
Bitte warten ..
Mitglied: Connor1980
15.08.2010 um 01:17 Uhr
Ok, das mit dem getElementByName war auch nur ein Versuch, nachd em Motto, wenns mit Id geht, warum nicht mit Name 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 ...
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Rechtliche Fragen
Hotspot rechtssicher betreiben? (14)

Frage von xSiggix zum Thema Rechtliche Fragen ...

ISDN & Analoganschlüsse
gelöst Splitter - RJ45 zu RJ11? (14)

Frage von Waishon zum Thema ISDN & Analoganschlüsse ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (12)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...