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, 6514 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst Powershell Fehler beim Start von zweitem Process (5)

Frage von iceboxyz zum Thema Batch & Shell ...

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

Frage von Schmierlappen zum Thema Windows Tools ...

Windows Server
Fehler bei Remote PowerShell mit einem Domänen-Benutzer (4)

Frage von xcabur zum Thema Windows Server ...

Windows 10
Powershell 5 BSOD (5)

Tipp von agowa338 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Microsoft
Ordner mit LW-Buchstaben versehen und benennen (19)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...