Hallo,
habe gerade erst angefangen mit AutoIt und bin von den Möglichkeiten sehr begeistert. Vorkenntnisse: VBA und VB Script, so dass die Syntax sehr heimisch ist. Dank des Tutorials und der Onlinehilfe bin ich schon ziemlich gut vorangekommen, stecke jetzt allerdings hier fest:
Ich rufe mittels Skript den IE auf mit einer bestimmten Seite. Dort logge ich mich Benutzername und Kennwort ein, funktioniert alles. Dann stelle ich fest, dass die Site nun (nach dem Einloggen) aus 3 Frames besteht. Ich lese Text aus dem zweiten Frame aus, funktioniert. Schließe ich danach den IE im Skript, ohne auszuloggen, wird das Skript auch beendet.
Ich möchte aber natürlich vorher ausloggen. Dazu lasse ich im dritten Frame auf den Logout-Knopf klicken. Und hier geht es nicht weiter. Danach bleibt das Skript jedesmal im Systray stehen und wird nicht beendet. Der IE wird auch nicht beendet, sondern bleibt offen stehen. Irgendwie findet das Skript den "Rückweg" zum "normalen IE" nicht mehr. Könnt Ihr mal sagen, wo ich jetzt den Knoten habe?
Ich habe auch schon versucht mit _IEAttach den $oIE wieder "heranzuholen", scheitert alles daran, dass es nach dem _IEImgClick nicht mehr weitergeht. Da bleibt das Skript einfach stehen.
#include <ie.au3>
;Erstellt eine Instanz (neues Fenster) des InternetExplorers und gibt ein entsprechendes Objekt zurück.
$oIE = _IECreate ("http://ftp.kubus-translations.net/cgi-bin/FileManager/Login.pl")
If Not IsObj($oIE) Then Exit
[/autoit][autoit][/autoit][autoit];warten bis die Seite komplett geladen wurde
_IELoadWait($oIE)
;Zuerst auf den Knopf drücken!!
_IEImgClick($oIE, "File Manager Login", "alt")
;Erzeugen eines HTML-Formular-Objekts mit Hilfe des Formularnamens
$oForm = _IEFormGetObjByName($oIE, "loginform")
;Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames
$oUsername = _IEFormElementGetObjByName($oForm, "login")
;Setzen des Formularfeldinhalts
_IEFormElementSetValue($oUsername, "*****")
;Erzeugen eines Formularfeld-Objekts mit Hilfe des Feldnames
$oPasswd = _IEFormElementGetObjByName($oForm, "password")
;Setzen des Formularfeldinhalts
_IEFormElementSetValue($oPasswd, "*****")
;Das Loginknöpfchen identifizieren
$oLogin = _IEFormElementGetObjByName($oForm, "log_in")
;Das Knöpfchen drücken
_IEAction($oLogin, "click")
;Warten, bis die Site geladen ist
_IELoadWait($oIE)
;auf Frames testen
$oFrames = _IEFrameGetCollection($oIE)
$iNumFrames = @extended
If $iNumFrames <> 3 Then Exit
If Not _IEIsFrameSet($oIE) Then Exit
$oFrame = _IEFrameGetCollection($oIE, 1)
If _IEPropertyGet($oFrame, "locationurl") = "http://ftp.kubus-translations.net/cgi-bin/FileManager/Manager.pl?type=content&opt=name" Then
;...
EndIf
$oFrame = _IEFrameGetCollection($oIE, 2)
If _IEPropertyGet($oFrame, "locationurl") = "http://ftp.kubus-translations.net/cgi-bin/FileManager/Manager.pl?type=foot" Then
_IEImgClick($oFrame, "Exit", "alt")
EndIf
;******* Hier hängt es: Hierher kommt ich einfach nicht.
;Das Skript bleibt im Systray stehen und wird nicht beendet
;Natürlich wird dann auch der IE nicht beendet.
_IEQuit($oIE)
Bitte helft mir, wie ich den "Rückweg", damit das Script beendet wird.
Gruß
Lisa