IE Script in FF Script umschreiben

  • Hallo
    ist es möglich mein ganzes Script in FF schreiben ?

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <IE.au3>

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

    _IEErrorHandlerRegister()
    $index = _IECreateEmbedded()

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 470, 430, Default, Default)
    $button1 = GUICtrlCreateButton("Start", 0, Default, 469, Default)
    $lalal = GUICtrlCreateObj($index, 0, 25, 473, 409)
    _IENavigate($index, "http://newmt2-reloaded.eu/shop.php", 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $button1
    $oForm = _IEFormGetObjByName($index, "Login")
    $oQuery = _IEFormElementGetObjByName($oForm, "userid")
    $oQuery2 = _IEFormElementGetObjByName($oForm, "password")
    ;~ $oQuery3 = _IEFormElementGetObjByName($oForm, "Submit")
    _IEFormElementSetValue($oQuery, "x")
    _IEFormElementSetValue($oQuery2, "x")
    ;~ _IEFormElementSetValue($oQuery3, "x")
    $lala = _IEFormSubmit($oForm)
    EndSwitch
    WEnd

    [/autoit]
    Die Source wo ich mich anmelden will weil ihr kein cookie habt kommt ihr nicht auf die seite


    ich will es in ff weil die seite nur mit cookie geht und den habe ich nur bei ff drinne :)

    Einmal editiert, zuletzt von Freaky (7. November 2009 um 11:47)

  • Hallo,

    wenn es nicht embedded sein muß, dann ja.

    Wäre dann im Groben:

    Spoiler anzeigen
    [autoit]

    #include <FF.au3>

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

    _FFStart("http://newmt2-reloaded.eu/shop.php")

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

    If _FFIsConnected() Then
    _FFSetValue($sUserID, "userid", "name")
    _FFSetValue($sPassWort, "password", "name")
    _FFFormSubmit("login", "name")
    ; oder wenn es nur ein Formular gibt:
    ;_FFFormSubmit()
    EndIf

    [/autoit]
  • ne es sollte dann schon in der form bleiben :) aber trotzdem danke schonmal

    /Edit:
    Habe es mal ausprobiert und es geht nicht :(
    Bei mir startet es die Seite aber danach passiert nichts
    Habe es mal debugt und msg´s reingetahn nach _FFStat passiert garnichts

    Einmal editiert, zuletzt von Freaky (7. November 2009 um 10:55)

  • Hallo,

    auch wenn Sinn und Zweck von Einlogg-GUIs nicht versteh ...
    ... was soll schon auf einer Seite viel passieren, deren Quelltext so aussieht???

    PHP
    <html><head><meta http-equiv="refresh" content="0; URL=./index.php"></head></html>


    = endloses Neuladen ...

  • Funktioniert doch, außer dem Absenden, da war der Name falsch geschrieben.

    [autoit]

    _FFSetValue("bla", "userid", "name")
    _FFSetValue("test", "password", "name")
    _FFFormSubmit()

    [/autoit]

    wenn es dennoch nicht geht, was für Meldungen stehen denn in der Console des Editors?

    Bzw. ruft es meist etwas unvermutete Sachen hervor, wenn, wie in dem Fall, der Name bzw. die ID den Namen einer Methode tragen: "Submit"
    ... dann funktioniert form.submit() nicht mehr.

  • oh garnicht gesehn :)

    Code
    __FFSend ==> Socket Error
    _FFCmd ==> Error return value
    _FFSetValue ==> No match: $sElement: .getElementsByName('userid')[0]
    __FFSend ==> Socket Error
    _FFCmd ==> Error return value
    _FFSetValue ==> No match: $sElement: .getElementsByName('password')[0]
    __FFSend ==> Socket Error
    _FFCmd ==> Error return value
    __FFSend ==> Socket Error
    _FFCmd ==> Error return value

    /Edit:
    mein script

    [autoit]

    #include <FF.au3>
    _FFSetValue("bla", "userid", "name")
    _FFSetValue("test", "password", "name")
    _FFFormSubmit()

    [/autoit]
  • "Socket error" bedeutet, daß keine Verbindung zu FireFox besteht.
    Die mußt Du in Deinem Programm schon auch noch herstellen, sonst wissen die Funktionen nicht "mit wem sie reden sollen" ...

    Entweder mit _FFStart oder _FFConnect.

    z.B.

    [autoit]

    #include <FF.au3>
    If _FFConnect() Then
    _FFSetValue("bla", "userid", "name")
    _FFSetValue("test", "password", "name")
    _FFFormSubmit()
    EndIf

    [/autoit]
  • Code
    _FFConnect: OS:	WIN_XP WIN32_NT 2600 Service Pack 3
    _FFConnect: AutoIt:	3.3.0.0
    _FFConnect: FF.au3:	0.5.3.10b
    _FFConnect: IP:	127.0.0.1
    _FFConnect: Port:	4242
    _FFConnect: Delay: 	2ms

    danach passiert rein garnichts :(

  • Komisch bei mir funktioniert es so ...

    Schon mal eine andere Methode probiert?

    [autoit]

    _FFFormSubmit("Login", "name", "click")

    [/autoit]

    - oder auch ein anderer Parameter anstatt "click"

    oder wenn gar nichts mehr hilft - "Enter" im Passwort-Feld simulieren:

    [autoit]

    _FFDisPatchEvent( _FFXpath("//input[@type='password']", "", 9) , "keypress", 13)

    [/autoit]

    Was gibt es denn für eine Fehlermeldung?

  • Kommt darauf an wie Du die Seite öffnest.
    Wenn Du sie per Programm öffnest, dann warten Befehle wie _FFOpenURL bis die Seite vollständig geladen.
    Du kannst natürlich auch per _FFSearch ein Stichwort auf der Login-Seite suchen und erst wenn dieses vorhanden ist, das Formular ausfüllen und absenden.