Wie warten bis Website komplett geladen ist mit FireFox??

  • HiHo zusammen,

    Schönes Forum hier! Hat mich inspiriert auch mal mit Autoit anzufangen :-))
    Geht soweit auch gut nur fehlt mir im Moment eine Idee!
    Und zwar, wie ich Autoit sagen kann, dass es erst mit dem Script fortfahren soll bis die vorher aufgerufene Website komplett fertig geladen ist.
    Irgendwie fehlt mir da die Idee zu und mit SLEEP ist nicht so toll, da die Ladezeiten stark unterschiedlich sind.

    Hoffe Ihr habt hier eine Idee. Vielleicht ist ja irgend ein Crack da der sich zwar über mein Problem kaputt lacht aber mir trotzdem helfen will!
    THX im Voraus

    3 Mal editiert, zuletzt von MrB (5. Oktober 2008 um 20:34)

  • _IENavigate ( ByRef $o_object, $s_url [, $f_wait = 1] )

    Parameters:

    $o_object Object variable of an InternetExplorer.Application, Window or Frame object
    $s_url URL to navigate to (e.g. "http://www.autoitscript.com")
    $f_wait Optional: specifies whether to wait for page to load before returning

    • 0 = Return immediately, not waiting for page to load
    • 1 = (Default) Wait for page load to complete before returning
  • THX Leviathan,

    Funktioniert wohl nicht mit dem Firefox, oder?

    Habe nämlich eine große Antipathie gegen IE

    Und wäre da nicht _IELoadWait() irgendwie sinnvoller?

    So einiges neues! Hab jetzt eine FF.au3 als Ersatz für die IE.au3 gefunden. Soll mit FF funktionieren! Dort heist die Funktion _FFLoadWait

    [autoit]


    ; #FUNCTION# ===================================================================
    ; Function ......: _FFLoadWait
    ; Description ...:
    ; Parameter(s) ..: ByRef $Socket
    ; $iDelay = 0
    ; $iTimeOut = 45000
    ; Requirement ...:
    ; Return values .: Success - 1
    ; Failure - 0
    ; User CallTip: .: (ByRef $Socket[, $iDelay = 0[, $iTimeOut = 45000]])
    ; Author(s) .....: Thorsten Willert
    ; Date ..........: 07. Dezember 2007
    ; Note(s) .......:
    ; ==============================================================================
    Func _FFLoadWait(ByRef $Socket, $iDelay = 0, $iTimeOut = 45000)
    If Not __FFIsSocket($Socket) Then
    SetError(__FFError("_FFOpenURL", $_FF_ERROR_SocketError))
    Return 0
    EndIf

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

    Local $TimeOutTimer = TimerInit()
    Local $tmp

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

    Sleep($iDelay)

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

    While (TimerDiff($TimeOutTimer) < $iTimeOut)
    Sleep(500)
    $tmp = _FFSetGet($Socket, "document.getElementById('statusbar-icon').value")
    If @error Then Return 0
    If $tmp = 100 Or $tmp = '"100"' Then Return 1
    Wend

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

    SetError(__FFError("_FFLoadWait", $_FF_ERROR_Timeout, "Can not check site status."))
    Return 0

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

    EndFunc ;==>_FFLoadWait

    [/autoit]

    So nun habe ich im Script folgendes geschrieben (nur ein Ausschnitt, $link wurde vorher über Input übergeben)

    [autoit]


    #include <ff.au3>

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

    run ("c:\firefox.exe")
    WinWaitActive("Mozilla Firefox")
    Opt("MouseClickDownDelay", 50)
    mouseclick( "left", 130, 60, 1)
    MouseMove(500, 60)
    MouseDown("left")
    MouseMove(226, 60)
    MouseUp("left")
    sleep(300)
    send("{delete}")
    sleep(300)
    Opt("SendKeyDelay", 25)
    Opt("SendKeyDownDelay", 13)
    send("" & $link)
    $socket = $link
    _FFLoadWait($Socket)
    mouseclick( "left", 1270, 6, 1) ;schließen

    [/autoit]

    Nur nix funktioniert. FF startet nur leider beendet er dann sofort wieder.
    Wahrscheinlich hab ich nix kapiert. Muss man das Fenster über _FFOpenURL öffnen??

    2 Mal editiert, zuletzt von MrB (4. Oktober 2008 um 21:28)

  • da hab ich doch das FireFox glatt überlesen, sonst hätt dich auf die ff.au3 verwiesen -.-

  • @leviathan

    Ne,Ne, war mein Fehler!! Hab das nur der Vollständigkeithalber rein editiert

    Stilgar
    Ja, da ist wieder mein Problem. Die Dinger hassen mich. Klar hab ich die Board-Suche angestrengt und hab damit genau um diesen Bereich drumherum gesucht. Ich steh definitiv mit Board-Suchfunktionen auf Kriegsfuß bzw. mein IQ lässt zu wünschen (verbitte mir jegliche Kommentare :) ) übrig.

    Werd mir deinen Link jetzt mal zu Gemüte führen. THXXXXX

    Ahhh, jetzt hab ichs. Auf deiner Seite war ich ja schon ! Nur hab ich da irgendwie die Sache mit MozLAB überlesen. Leider bringt mir das nix, da ich TorPark benutzen will (Standalone mit integriertem TOR) und ich leider noch nicht weis, wie ich da die AddOns einfügen kann (per Script) . Also weiterlesen

    So funktioniert soweit ganz gut nachdem alle Unklarheiten beseitigt waren, nur wie bekomme ich die ff.au3 dazu nicht den Standard Firefox zu benutzen sondern die von mir gewünschte Standalone Version ?
    Hoffe kannst mir da helfen Stilgar
    CU

    4 Mal editiert, zuletzt von MrB (5. Oktober 2008 um 21:00)

  • Hallo,

    falls du MozLab in TorPark (bzw. mittlerweile XeroBank) installieren kannst, ist der einzige Befehl den du in der FF.au3 nicht benutzen kannst _FFStart, alles andere sollte funktionieren, wenn du die Verbindung zu MozLab via. _FFConnect bekommst.

    Grüße
    Stilgar

  • Ah Gut, dann bin ich also einfach nicht fähig dazu es zum laufen zu bringen!

    Helf mal bitte einem Doofen :)
    poste bitte mal den Aufruf der Funktion nach meinem Beispiel Script oben. Irgendwie check ich das nicht. Die müsste ja in Zeile 16 kommen nachdem ich manuell torpark geöffnet habe, die Adressleiste gelöscht und den Link gesendet habe.

    Dank Dir

  • Da ich leider nicht nachvollziehen kann was dein Script macht, hier mal ein einfachstes Beispiel:

    [autoit]

    #include <ff.au3>

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

    run ("c:\firefox.exe ") ; firefox starten, MozLab ist hoffentlich schon an ;)

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

    $Socket = _FFConnect() ; Verbindung zu FF herstellen
    If $Socket > -1 Then ; wenn eine Verbindung besteht
    _FFOpenURL($Socket,"www.gibtswahrscheinlich.net") ; Seite aufmachen
    ; _FFLoadWait($Socket) -> braucht es hier nicht, das macht _FFOpenURL schon
    _FFQuit($Socket) ; Browser schließen
    EndIf

    [/autoit]

    und dazwischen irgendwo TorPark starten?

  • Thx Stilgar für deine Geduld.

    Also als erstes mal die Frage wie ich das verstehen darf.

    Zitat

    MozLab ist hoffentlich schon an ;)

    Meinst du damit, das Firefox läuft bzw. TorPark (Addons sind in Torpark installiert nicht in Firefox).

    ##VERGISS ES ! Ich bin einfach blöd :-)) Hab´s gefunden.##
    Gibt es eine Möglichkeit MOzLab per Script zu starten (ohne klicks und send Befehle)

    Zitat

    und dazwischen irgendwo TorPark starten?

    Heist das man muss Zwangsweise Firefox immer starten auch wenn er prinzipiell nicht gebraucht wird? Würde ja auch bedeuten, das die AddOns im Original FF installiert sein müssten und das wäre schlecht

    ## Vergiss es auch. Funktioniert jetzt ##

    So und nun mal ein Beispiel wie ichs so verstanden habe:

    [autoit]

    #include "FF.au3"

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

    Dim $IP = "127.0.0.1"

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

    run ("c:\tor\torpark.exe")
    WinWaitActive ("Mozilla - Firefox")

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

    $Socket = _FFConnect($IP)

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

    If $Socket <> -1 Then
    _FFopenurl($Socket, "http://www.autoit.de")
    Else
    MsgBox(0, "Fehler", "Keine Verbindung")
    EndIf

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

    _FFDisConnect($Socket)

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

    Exit

    [/autoit]

    Sag bitte mal, ob das so funzen müsste. Bei mir startet er zwar TorPark und das wars. ##Stimmt auch net mehr FUNZT##

    Tja, das Resultat von der Sache ist , wer lesen kann ist eindeutig im Vorteil. Mensch, ein bisschen mehr Zeit wäre echt net schlecht!

    Danke für deine Geduld

    Meldung bekomme ich immer, hab mal was darüber gelesen weis nur net mehr wo grrrml

    C:\Programme\AutoIt3\Include\FF.au3(1232,38) : WARNING: $sMode: possibly used before declaration.
    Return _FFGetLength($Socket, $sMode =
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    C:\Programme\AutoIt3\Include\FF.au3(1232,38) : ERROR: $sMode: undeclared global variable.
    Return _FFGetLength($Socket, $sMode =
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^

    Einmal editiert, zuletzt von MrB (6. Oktober 2008 um 21:01)