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, 6709 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
Batch & Shell
gelöst Zusammenführen mehrere Felder, Datei auswählen (3)

Frage von GeoSem zum Thema Batch & Shell ...

Windows Tools
gelöst Powershell - Auswahl aus Listbox soll Aktion ausführen (4)

Frage von Schmierlappen zum Thema Windows Tools ...

Batch & Shell
gelöst AD-Felder für User mittels Powershell befüllen aus CSV-Datei (2)

Frage von Alex94G zum Thema Batch & Shell ...

Batch & Shell
gelöst AD-Gruppen Auswahl als Dropdownliste (4)

Frage von Peterz zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows 7
Bluesreens unternehmensweit (18)

Frage von SYS64738 zum Thema Windows 7 ...

Festplatten, SSD, Raid
gelöst Raid-Controller (Areca) Datenverlust trotz R5 (16)

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

Windows 10
Programm Installation bei Win 10 Fehlerhaft (13)

Frage von Keineahnungvonnix zum Thema Windows 10 ...

Windows Netzwerk
DNS ins mehreren Subnetzen (13)

Frage von joerg zum Thema Windows Netzwerk ...