Im IE Text aus Frames auslesen, Script wird nicht beendet?

  • 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.

    [autoit]


    #include <ie.au3>

    [/autoit][autoit][/autoit][autoit]

    ;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")

    [/autoit][autoit][/autoit][autoit]

    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)

    [/autoit][autoit][/autoit][autoit]

    ;auf Frames testen
    $oFrames = _IEFrameGetCollection($oIE)
    $iNumFrames = @extended

    [/autoit][autoit][/autoit][autoit]

    If $iNumFrames <> 3 Then Exit
    If Not _IEIsFrameSet($oIE) Then Exit

    [/autoit][autoit][/autoit][autoit]

    $oFrame = _IEFrameGetCollection($oIE, 1)
    If _IEPropertyGet($oFrame, "locationurl") = "http://ftp.kubus-translations.net/cgi-bin/FileManager/Manager.pl?type=content&opt=name" Then
    ;...
    EndIf

    [/autoit][autoit][/autoit][autoit]

    $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

    [/autoit][autoit][/autoit][autoit]

    ;******* 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)

    [/autoit]

    Bitte helft mir, wie ich den "Rückweg", damit das Script beendet wird.
    Gruß
    Lisa

  • Würde dir gern helfen, aber ich kann das ganze erst Testen, sobald die Jungs und Mädels von kubus-translations meinen account freigeschlatet haben

    (hab jetzt eigentlich nur gepostet damit du weißt, dass dein Thread nich übersehen wurde - die brennende Papiertüte sieht alles !)

  • Hallo SeuBo,

    danke für Deine Antwort und sorry, dass ich jetzt erst antworte. Die Woche ist wieder komplett Land unter auf meinem Schreibtisch. Ich komme vermutlich erst am Wochenende wieder dazu. Den Account werden sie Dir vermutlich nicht freischalten.Ich muss mal sehen, ob ich das noch hinkriege.

    Ich benutz das Script inzwischen so, dass der IE einfach ohne Ausloggen geschlossen wird, damit erfolgt offenbar automatisch ein Logout. Falls ich nicht das ganze Wochenende arbeiten muss, will ich mal probieren, mir die firefox.au3 herunterzuladen und es damit nachzubauen, vielleicht geht's ja damit.

    Aber mal prinzipiell: Habe ich irgendeinen logischen Fehler in meinem Skript, der für das Anhalten des Skripts zuständig wäre? Oder ist das vermutlich auf irgend eine Javascript-Aktion zurückzuführen, die der Button auslöst? Ich war halt nicht sicher, weil man bei solchen Frames ja nie weiß ... Da ich gerade erst mit AutoIt anfange, will ich natürlich nichts Falsches lernen. Also falls in meinem Skript ein logischer Fehler zu sehen ist, der das Skript anhält, wäre es nett, wenn ich das wüsste.

    Gruß
    Lisa