[gelöst] FF4 und FF.au3 möglich?

    • Offizieller Beitrag

    Hat jemand von euch die FF.au3 mit dem FF4 verwenden können?
    Ich bekomme folgenden Fehler:
    __FFWaitForRepl ==> MozRepl Exception: !!! [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"
    Installiert ist MozRepl 1.1beta2, das einzige Mozrepl-Plugin, das sich im FF4 installieren ließ.

  • Also diese Meldung erscheint bei mir auch unter anderem, scheint aber keine Auswirkung auf mein Testscript zuhaben. Läuft alles so wie gewollt durch.
    Ich verwende eine frische FF Portable 4.0 mit der 1.1 beta 2 von MozRepl unter Vista 64bit.
    EDIT: auch unter Win7 als kompilierte 64bit exe fehlerfrei getestet.

    Testscript:

    Spoiler anzeigen
    [autoit]


    #include <FFex.au3>

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

    $ffProzess = Run(@ScriptDir & "\FirefoxPortable.exe", "", @SW_SHOW)
    Do
    _FFConnect()
    $OK = @error
    If @error Then _FFDisConnect()
    Until Not $OK

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

    _FFOpenURL("www.google.de")
    _FFTabAdd("about:blank", False , False)
    _FFTabAdd("about:blank", False , False)
    _FFTabAdd("about:blank", False , False)
    _FFTabSetSelected(1)
    _FFOpenURL("www.chip.de")
    _FFTabSetSelected(2)
    _FFOpenURL("www.heise.de")
    _FFTabSetSelected(3)
    _FFOpenURL("www.wikipedia.de")
    _FFTabSetSelected(0)

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

    MsgBox(0,"","ff wird nun beendet")
    _FFQuit()

    [/autoit]

    Konsolen Ausgabe:

    Spoiler anzeigen

    Einmal editiert, zuletzt von misterspeed (18. April 2011 um 19:45)

    • Offizieller Beitrag

    OK, ich hatte vermutet, dass deshalb meine Eingabefelder leer bleiben.
    Nun habe ich aber alle Returns ausgewertet, MozRepl funktioniert und somit werden die FF-Funktionen auch ausgeführt.
    Seltsamerweise zeigen alle Funktionen Erfolg - aber meine Felder bleiben leer.

    Spoiler anzeigen
    [autoit]

    #include <FF.au3>

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

    Local $class = '[CLASS:MozillaWindowClass]', $sPath, $hWnd
    Local $url = "http://webmailer.1und1.de/"
    Local $user = "meine-mail@online.de"
    Local $pw = "password"
    Local $btLogin = "https://webmailcluster.1und1.de/img/main_Login_Webmailer.png"

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

    If Not ProcessExists('firefox.exe') Then
    $sPath = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Mozilla\Mozilla Firefox 4.0\bin', 'PathToExe')
    Run($sPath)
    WinWait($class)
    EndIf

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

    If Not WinActive($class) Then
    $hWnd = WinActivate($class) ; ohne jede Wirkung, obwohl ohne Fehler ausgeführt
    WinSetState($hWnd, '', @SW_SHOW) ; -"-
    EndIf

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

    _FFConnect()
    _FFTabAdd("about:blank")
    _FFOpenURL($url)

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

    _FFSetValue($user, "username", "name") ; Funktion erfolgreich - Feld ist aber leer
    ;~ __FFSend: try{window.content.top.document.getElementsByName('username')[0].value='meine-mail@online.de'}catch(e){'_FFCmd_Err';};
    ;~ __FFRecv: [email='meine-mail@online.de'][/email]

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

    _FFSetValue($pw, "password", "name") ; Funktion erfolgreich - Feld ist aber leer
    ;~ __FFSend: try{window.content.top.document.getElementsByName('password')[0].value='password'}catch(e){'_FFCmd_Err';};
    ;~ __FFRecv: password

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

    _FFClick("login_b", "id")
    ;~ __FFSend: try{FFau3.simulateEvent(FFau3.WCD.getElementById('login_b'),'MouseEvents','click');}catch(e){'_FFCmd_Err';};
    ;~ __FFRecv: 1

    [/autoit]


    Und noch etwas Seltsames: Wenn ich obiges Skript auf eine geöffnete FF-Sitzung anwende (das im Moment im Hintergrund ist) werden die Funktionen WinActivate() / WinSetState() erfolgreich ausgeführt, aber das Fenster bleibt trotzdem verdeckt. SetWinOnTop hilft auch nicht. :wacko:

  • Also das mit den Feldern dürfte nicht an FF4 liegen, hab das aber nicht im 3er getestet.
    So funktioniert es jedenfalls:

    [autoit]


    _FFSetValue($user, "login.Username", "name")
    _FFSetValue($pw, "login.Password", "name")

    [/autoit]

    Du hast also vermutlich nur das Falsche Feld ausgefüllt. Auch das Absenden klappt dann.

    EDIT: Das Fenster in den Vordergrund holen funktioniert bei mir nur beim erstenmal, danach verbleibt es im Hintergrund, was in der Tat seltsam ist. (Win7)

    Einmal editiert, zuletzt von misterspeed (18. April 2011 um 23:02)

    • Offizieller Beitrag

    Ja, leck mich - Tatsache, so gehts. Aber wie soll man denn auf diese Elementbezeichnungen kommen? Im Quelltext steht doch folgendes:

    Code
    Username:
    	<input type="hidden"
    	name="username"
    	id="username"
    	value="">
    Passwort:
    	<input type="hidden"
    	name="password"
    	id="password"
    	value="">


    Ich weiß schon, warum ich mich bisher immer gegen den FF gesträubt habe. :D
    Aber leider tuts mein geliebtes K-Meleon nicht so richtig unter Win7. :S

  • Hi im Quelltext stehen auch noch die beiden anderen ID's:

    PHP
    <input type="hidden" name="username" id="username" value="">
    <input type="hidden" name="password" id="password" value="">
    <input type="hidden" name="__sendingdata" value="1">
    
    
    ...
    
    
    <input type="text" size="40" maxlength="200" class="text readonly" id="login.Username" readonly="true" name="login.Username" value="">
    <input type="password" size="40" maxlength="200" class="text readonly" id="login.Password" autocomplete="off" readonly="true" name="login.Password" value="">


    Und hier noch eine eher unschöne Notlösung für dein Vorder/Hintergrund Problem:

    [autoit]


    WinSetState($class,'',@SW_MINIMIZE)
    If Not WinActive($class) Then
    $hWnd = WinActivate($class) ; ohne jede Wirkung, obwohl ohne Fehler ausgeführt
    WinSetState($hWnd, '', @SW_SHOW) ; -"-
    EndIf

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

    _FFConnect()
    _FFAction("Restore")

    [/autoit]