Frage zu FF.au3 [_FFLoadWait()]

  • Nabend Autoit Freunde.

    Ich versuche mich grade an der FF.au3, da mich der IE mal wieder mit seiner Bedienerfeindlichkeit im Stich lässt.

    Mein Problem ist hierbei die _FFLoadWait(). Könnte es sein, dass diese Funktion nicht äquivalent zur _IELoadWait () ist? Im speziellen vermute ich, dass die _FFLoadWait() nicht darauf wartet bis eine Seite geladen ist sondern vielmehr nur auf eine Antwort bzw. einen Dateneingang des Angesprochenen Servers/ der angesprochenen Seite wartet und dann "Geladen" meldet.

    Um dies nochmal an meinem Programm zu verdeutlichen:

    1. Ich öffne den FF und lade eine Seite (hierbei handelt es sich um eine Seite mit Suchergebnissen, wie sie beispielsweise Google liefern würde)

    2. If _FFLoadWait() then...

    3. FileWrite($file, _FFReadText())


    Als Ergebnis erhalte ich jedoch maximal 1/3 der Seite. Des weiteren haben Versuche mit MSGBOX gezeigt, das "Geladen" gemeldet wurde bevor der Browser die Seite auch tatsächlich geöffnet hat. Dies+ dem Ergebnis von _FFReadText()/_FFReadHTML() lassen mich nun vermuten, dass _FFLoadWait() nicht darauf wartet bis eine Seite geladen ist.

    Daher nun meine Frage, gehe ich recht in der Annahme mit meiner Vermutung und was noch wichtiger ist habt ihr vielleicht Lösungsmöglichkeiten für mich um sicher zu stellen das eine Seite geladen ist bevor das Programm fortgesetzt wird?
    Ein Sleep wäre hierbei etwas ungeeignet da ich die Ladezeit der Seiten nicht eingrenzen kann.

    Einmal editiert, zuletzt von king.ralph (3. Januar 2011 um 11:41)

  • Hallo king.ralph,

    kann ich nicht betätigen, hier ein Beispiel dazu:

    Spoiler anzeigen
    [autoit]

    #include <FF.au3>
    If _FFConnect() Then
    _FFStart("about:")
    _FFOpenURL("http://german.documentation.ff-au3.thorsten-willert.de/", False)
    ; normaler weise hier schon true oder ohne aber es soll ja FFLoadwait getestet werden
    _FFLoadWait()
    MsgBox(0, "Bin fertig", "Zeit: " & @extended & " ms")
    EndIf

    [/autoit]

    wenn die MsgBox erscheint ist die Seite geladen

    mfg autoBert

  • ja vielen dank für die schnelle antwort. ich bin nun auch etwas weiter gekommen und möchte meine erkenntnisse mitteilen.

    ich habe mir das script der seite etwas näher angeschaut und mir ist ein fehler aufgefallen. dieser wird vom FireFox auch gemeldet, die seite jedoch wird ganz normal weiter geladen. nun reicht mein wissen für einzelne FF mechanismen nicht aus um dies mit bestimmtheit zu sagen, jedoch vermute ich das FF ab dem scriptfehler "geladen" meldet. wie bereits erwähnt ist dies rein spekulativ aber es würde erklären warum der wait-befehl nicht funktioniert.
    der internet explorer hingegen wartet bis tatsächlich alle objekte der seite geladen wurden.

    ich würde euch jetzt gern die seite angeben damit ihr es mal selbst ausprobieren könnt aber nach betrachten des scripts bin ich mir nicht mehr sicher, ob dies nicht gewollt ist. ich bitte daher um verständnis, dass ich die seite hier nicht angebe. ich werde jedoch versuchen den host zu kontaktieren und dies in erfahrung zu bringen. sollte mein vorhaben von ihm nicht geduldet werden hat es sich mit meinem script eh erledigt. ansonsten werde ich die seite gern hier posten.

    abschliessend habe ich eine lösung gefunden, die ich hier posten möchte:

    um nun sicher zu gehen, dass die seite auch komplett geladen ist nutze ich _FFReadText() in einer endlos schleife. daraufhin überprüfe ich die erhaltenen daten mit StringReplace auf einen bestimmten einmaligen string am ende der seite. sobald ich diesen gefunden habe ist die seite komplett geladen.