FF-Management - FireFox.au3

  • hat jetzt mal nix mit Firefox zu tun. aber in gewisser weise mit diesem thread:

    Autor
    Blubkuh
    18.08.2007 22:48


    warum bin ich als Autor eigetragen? ^^
    Eigentlich hat Stilgar doch diesen Thread aufgemacht

    Dieser Beitrag wurde 9521 mal editiert, zum letzten Mal von Blubkuh: Morgen, 02:28.

    [autoit]

    If Not $Elephant Then $Irelephant = True

    [/autoit]

    Einmal editiert, zuletzt von Blubkuh (16. September 2007 um 02:28)

  • Stilgar
    gut das ich nachgeschaut habe ...
    V0.2.8.1:
    * NEU: _FFStart: FireFox kann nun jede Instanz mit einem anderem Profil starten
    Ich war nämlich am basteln.
    Wenn ich gewusst hätte, das man die Umgebungsvariable so einfach ändern
    kann.

    War schon fertig und wollte schauen, ob ich da noch was mit case machen kann. Na, jetzt ist egal.

    Spoiler anzeigen
    [autoit]


    Func __FFStartProcess($sProfile = "default", $bHide = False, $iTimeOut = 60000, $MOZ_NO_REMOTE = 0)

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

    If $sProfile Then
    $sProfile = ' -P "' & $sProfile & '"'
    Else
    $sProfile = ' -P "default"'
    EndIf

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

    Local $sHKLM = "HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox"
    Local $sVersion = RegRead($sHKLM, "CurrentVersion")
    Local $sFFExe = RegRead($sHKLM & "\" & $sVersion & "\Main", "PathToExe")

    If $MOZ_NO_REMOTE Then
    $sFFExe_ = StringTrimRight($sFFExe, 12) ; Änderung By Thunder-man
    If Not $bHide Then
    Run(@ComSpec & " /c " & 'SET MOZ_NO_REMOTE=1 &' & 'firefox.exe ' & '-repl ' & $sProfile, $sFFExe_, @SW_HIDE) ; Änderung By Thunder-man
    Else
    Run('"' & $sFFExe & '" -repl' & $sProfile, "", @SW_HIDE)
    EndIf
    If @error Then
    SetError(__FFError("__FFStartProcess", $_FF_ERROR_GeneralError, "FireFox.exe not found in: " & $sFFExe))
    Return 0
    EndIf

    Else
    If Not $bHide Then
    Run('"' & $sFFExe & '" -repl' & $sProfile) ; starting with MozRepl
    Else
    Run('"' & $sFFExe & '" -repl' & $sProfile, "", @SW_HIDE)
    EndIf
    If @error Then
    SetError(__FFError("__FFStartProcess", $_FF_ERROR_GeneralError, "FireFox.exe not found in: " & $sFFExe))
    Return 0
    EndIf
    EndIf

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

    Local $iTimeOutTimer = TimerInit()
    While 1
    Sleep(1000)
    If ProcessExists($_FF_PROC_NAME) Then ExitLoop
    If (TimerDiff($iTimeOutTimer) > $iTimeOut) Then
    SetError(__FFError("__FFStartProcess", $_FF_ERROR_Timeout, "FireFox process not exists: " & $_FF_PROC_NAME))
    Return 0
    EndIf
    WEnd

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

    If $_FF_COM_TRACE Then ConsoleWrite("__FFStartProcess: " & $sFFExe & '" -repl' & $sProfile & @CRLF)

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

    Return 1
    EndFunc ;==>__FFStartProcess

    [/autoit]

    Allerdings ist es bei Dir keine Option und wird immer so aufgerufen.
    Das kann zu Fehlermeldungen führen.

    Bei mir konnte ich nach dem Aufruf von (MOZ_NO_REMOTE=1) keine 2 gleiche Profile starten.

    Wenn also, jemand durch falsche Konfiguration 2 mal das Profil aufruft gibt´s nen Error.

    War mit mein "PeterZahlt" Script so, wenn jemand in der data.ini kein Profil angibt, ist es "default". Wurde nun eine Browser Instanz ohne aktiven
    "MozRepl" gestartet, wird versucht (wegen der falschen Angabe) eine neue Instanz zu öffnen, was aber nicht geht...

    Meldung:
    [Blockierte Grafik: http://img518.imageshack.us/img518/7495/msgsj1.jpg]

    so long
    Frank

    2 Mal editiert, zuletzt von thunder-man (17. September 2007 um 17:03)

  • @thunder-man:

    Stimmt kommt ein Fehler.
    Ich hab das mit den Profilen mal hinten angestellt und mache mal bei den "nützlichen" Funktionen (_FFForm...) weiter.

    Die V0.2.8.1 habe ich nochmal neu hochgeladen. Da war noch ein Syntax-Error in einem JavaScript der die Version unbrauchbar machte.

    Die neuen Befehle seit V0.2.7.9 sind alle noch nicht getestet, also nicht wundern wenn irgendwas "komisches" passiert.

    Grüße
    Thorsten

  • Stilgar

    Zitat

    Die neuen Befehle seit V0.2.7.9 sind alle noch nicht getestet, also nicht wundern wenn irgendwas "komisches" passiert.

    OK, wenn mir was komisches auffällt, melde ich mich natürlich.


    Frage:
    Können wir eine Meldung in der Konsole bei Disconnect bekommen?
    Ich meine, da steht nicht´s ...

    Und bleibt die gelbe Zeile in der Hilfe so klein?
    Ich muss die immer 1 Nummer vergrößern.

    Greeting
    Frank

    Einmal editiert, zuletzt von thunder-man (17. September 2007 um 17:55)

  • @thunder-man:
    Ich habe mal Fehler und Debug-Informationen in _FFDisconnect eingebaut und hochgeladen.

    Ja die Schrift ist wirklich recht klein. Ich habe zwar die Original-Hilfe und die gleiche CSS-Datei verwendet aber dennoch sieht es anderst aus ?( Muß ich mir mal genauer ansehen.

    Grüße
    Thorsten

  • Zitat

    Original von Stilgar
    @thunder-man:
    Ich habe mal Fehler und Debug-Informationen in _FFDisconnect eingebaut und hochgeladen.

    Ja die Schrift ist wirklich recht klein. Ich habe zwar die Original-Hilfe und die gleiche CSS-Datei verwendet aber dennoch sieht es anderst aus ?( Muß ich mir mal genauer ansehen.

    Grüße
    Thorsten


    Puh, THX das war ja fix.

    Allerdings tat sich bei mir gerade nichts bei _FFDisConnect, das Script arbeitet
    einfach weiter. (Na mal sehen, was da los ist.)

    Und bei der Hilfe halte ich im Moment die [STRG] Taste und das Wheel Rad.
    Aber das ist ja alles kein Prob...


    Edit:
    Hey,
    ich hatte für mein "PeterZahlt" Script in einer modifizierten Version der FF.au3 die PID global definiert und dann an mein Script übergeben.

    Ich habe nun gesehen, das Du es in der neuen Beta mit @extended übergibst. Was bedeutet @extended.

    Und ne frage zu _FFQuit. Das wird ja durch close() ausgelöst.
    Ist diese funktion vergleichbar mit ProcessClose, oder wird der Feuerfuchs
    ganz normal geschlossen.

    _FFTabExists funktioniert bei mir nicht.

    Einmal editiert, zuletzt von thunder-man (22. September 2007 um 20:54)

  • @thunder-man:

    @extended: siehe AutoIt-Hilfe ;) - das ist ein Macro mit dem man aus einer Funktion einen zusätzlichen Rückgabewert zurückgeben kann.

    Close() sollte ein ganz normales Beenden des Browsers sein. Ich werde das aber mal in der nächsten Version durch BrowserShutdown() aus der Browser.js ersetzen.

    Die Tab-Funktionen habe ich alle noch nicht ausprobiert, ich werde mich die nächsten Tage mal darum kümmern.

    Viele Grüße
    Thorsten

  • Hallo,

    ich gehe gerade meine ersten Schritte mit AutoIT und dem FF-Management.

    Folgendes Listing funktioniert bei mir nicht:

    [autoit]

    #region Includes
    #include "FF.au3"
    #endregion Includes

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

    dim $Socket
    dim $vSearch
    dim $sMode

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

    _FFStart("http://www.google.de/")
    sleep(3000)
    _FFClickLink($Socket, $vSearch = "Über Google", $sMode = "text")

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

    exit

    [/autoit]

    Ich möchte einfach nur, dass der Link "Über Google" angeklickt wird. Bei $sMode habe ich auch schon name und title versucht. Jedoch erfolglos.

    Kann mir jemand den entscheidenden Tipp geben?

    Der Firefox wird gestartet, auch das sleep-Kommando wird abgearbeitet aber dann steigt AutoIt aus ohne zu klicken.

    Danke für die Hilfe.

    Gruß


    Basky

    • Offizieller Beitrag

    Hallo

    So: _FFClickLink($Socket, $vSearch = "Über Google", $sMode = "text") ist das gleiche wie:
    _FFClickLink(True, False, False) weil er so nur checkt ob $vSearch = "Über Google"). Variablen musst du in einer Extra zeile deklarieren!

    z.B. so:

    [autoit]

    #region Includes
    #include "FF.au3"
    #endregion Includes

    dim $Socket
    dim $vSearch = "Über Google"
    dim $sMode = "text"

    _FFStart("http://www.google.de/")
    sleep(3000)
    _FFClickLink($Socket, $vSearch, $sMode)

    exit

    [/autoit]

    Mfg Spider

  • Hallo,

    der Socket ist der Rückgabewert von _FFStart bzw. _FFConnect und muß auch abgefragt werden, sonst funktioniert alles andere auch nicht - also:

    [autoit]

    #region Includes
    #include "FF.au3"
    #endregion Includes

    dim $vSearch = "Über Google"
    dim $sMode = "text"

    dim $Socket = _FFStart("http://www.google.de/")
    sleep(3000)
    _FFClickLink($Socket, $vSearch, $sMode)

    exit

    [/autoit]

    sleep sollte eigentlich nicht nötig sein, da die Funktion _FFStart wartet bis die Seite vollständig geladen ist. Siehe auch _FFLoadWait - diese Funktion wird auch von _FFStart verwendet.

    Viele Grüße
    Stilgar

    3 Mal editiert, zuletzt von Stilgar (16. Oktober 2007 um 23:10)

  • Hallo,

    leider funktionieren beide Lösungsvorschläge nicht.

    Ich habe alle Erweiterungen deaktiviert aber das ist auch nicht des Rätsels Lösung.

    Nach dem Sleep verabschiedet sich AutoIt.

    Gibt es eine Debug-Funktion, die ich nutzen kann?

    Gruß


    Basky

  • Hallo,

    nein, es gibt keine Error-Meldung. AutoIt beendet sich "einfach", ohne den Klick auszuführen.

    Die Seite wird geladen, wie in dem Script eingetragen. Anschließend wartet er drei Sekunden und beendet sich. Ohne Error.

    Gruß


    Basky

  • Hey,
    ich habe das mal durchgetestet.

    Der Link "Über Google" wird nicht geklickt und der Rückgabe Wert ist 0.

    Anders als wenn man z.B den Link "Werbeprogramme" klicken lässt.
    Das funnzt und es wird 1 zurück gegeben.

    Vielleicht ist es die leere Stelle im Text???

    [autoit]


    #region Includes
    #include "FF.au3"
    #include "array.au3"
    #endregion Includes

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

    ;~ dim $vSearch = "Über Google"
    dim $vSearch = "Werbeprogramme"
    dim $sMode = "text"
    dim $Socket = _FFStart("http://www.google.de/")

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

    $State = _FFClickLink($Socket, $vSearch, $sMode)
    MsgBox(64,"Status", $State)
    ;~ $aArray = _FFGetLinks($Socket,"text")
    ;~ _ArrayDisplay($aArray, "Google Links")
    exit

    [/autoit]

    Grüße
    Frank

    • Offizieller Beitrag

    Hallo

    Warum auf Über Google klicken wollen? Direkter Link wäre doch einfach: http://www.google.de/intl/de/about.html

    Wenn du trotzdem unbedingt daraufklicken willst probier es mal anstatt "Über Google" mit "%DCber%20Google". Kann es grad nicht ausprobieren hab noch nicht die FF.au3 auf meinem PC (Vorgestern XP neu daraufinstalliert ;-))

  • Hallo,

    warum es gerade dieser Link war, kann ich auch nicht sagen. Es wäre aber trotzdem interessant, wie ich Links mit Leer- und Sonderzeichen verarbeite.

    Was mich jetzt noch interessieren würde, ist ob man eine Linkliste einlesen und eine bestimmte Linkgruppe zählen kann.

    Zum Beispiel: (Linkliste)

    Flughafen
    Strand
    Haus
    Flughafen
    Strand
    Haus

    Ich möchte jetzt die Anzahl der Links 'Flughafen' zählen und nacheinander in einem Tab öffnen.

    Ein Tipp mit dem Zählen reicht mir schon. Ihr sollt schließlich nicht meine Arbeit machen :)

    Grüße


    Basky

  • Zitat

    Was mich jetzt noch interessieren würde, ist ob man eine Linkliste einlesen und eine bestimmte Linkgruppe zählen kann.

    Schaue mal in meinem Beispiel auf _FFGetLinks
    Ich lasse mir dort den Text aller Links ausgeben.
    Diese kann man dann mit if abfragen.

    Hier gibt´s die Hilfe dazu.

    T-M

  • Hey,
    gibt es eine Möglichkeit, diese Seite mit der FF.au3 zum
    laufen zu bekommen? (Aus der Fritz!Box)

    Das ist die Startseite mit Password.
    Ich kann den Text auslesen, aber keine Daten an das Inputfeld senden,
    "uiViewPassword" weil es ein anderer Pfad ist.

    Meldung:
    _FFStart ==> Invalid data type: http://fritz.box/cgi-bin/webcm?…dex_inhalt.html

    Grüße
    Frank

    Einmal editiert, zuletzt von thunder-man (22. November 2007 um 16:37)

  • Ok, Danke.
    Ich wunderte mich auch schon, weil es mit der IE.au3 keine Probleme gibt.
    (...möchte aber lieber ein FF Prog erstellen)

    so long
    Thunder-man