Kann AutoIT auch Formulare im Web ausfüllen und Daten empfangen...

  • Hallo,
    ich versuche zur Zeit in Java ein Programm zu schreiben, welches sich an einem Webserver anmeldet (Benutzername, Passwort) und dann ein paar Daten per POST Methode an den Webserver schickt. Dieser antwortet dann mit einem Logfile, welches ich abspeichern möchte.
    Meine Frage ist nun, ob AutoIT sowas kann und wenn ja, wie kann ich das realisieren.
    Das ganze ist ein Projekt für die Schule und nachdem ich jetzt schon 4 Wochen mit Java vergammelt hab, läuft mir die Zeit etwas weg, daher hoffe ich das es schnell und unkompliziert geht
    ich bedanke mich im Voraus

    Cybered

  • Ich würde Firefox mit shellexecute mit dem hidden attribut ausführen und doie aktionen per controlsend durchführen lassen.

    Das einzig schwere daran istz,dass du die ID jeder Control kurz auslesen müsstest....

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • Ich würde Firefox mit shellexecute mit dem hidden attribut ausführen und doie aktionen per controlsend durchführen lassen.

    Das einzig schwere daran istz,dass du die ID jeder Control kurz auslesen müsstest....

    Ah ja...könntest du kurz erklären was ein hidden attribut und controlsendist ???
    Wie müßte ich an die Sache rangehen.
    Cybered

  • Danke.
    Bin schon soweit den Firefox zu öffnen und die Adresse einzugeben und abzuschicken. Bis jetzt sieht es so aus

    Code
    ShellExecute("C:\Program Files\Mozilla Firefox\firefox.exe")
    WinWaitActive("Mozilla Firefox")
    Send("192.168.1.1")
    Send("{ENTER}")

    Jetzt frag ich mich, wenn ich so ein Flag setze, das er das im verborgenen macht, stehen dann alle Funktionen zur verfügung...weil fenstertexte etc. gibts ja keine...weil die ja nicht da sind 8| ?(
    Und kann ich denn dann die "HTML" Datei die im Browser "angezeigt" wird, auch abspeichern...weil angezeigt wird ja nix, wenns im verborgenen läuft.
    Cybered

  • Run ("C:\Program Files\Mozilla Firefox\firefox.exe",@SW_HIDE)
    WinWaitActive("Mozilla Firefox")
    Controlsend() ; Leider grade keine Zeit nachzu gucken aber hänge noch eien Erklärung ran
    Controlsend() ; Hier auch

    [autoit]

    ControlSend ( "title", "text", controlID, "string" [, flag] )

    [/autoit]

    Erklärung:
    Schlüsselwort ControlSend title The title of the window to access. text The text of the window to access. controlID The control to interact with. See Controls. string String of characters to send to the control. flag [optional] Changes how "keys" is processed:
    flag = 0 (default), Text contains special characters like + to indicate SHIFT and {LEFT} to indicate left arrow.
    flag = 1, keys are sent raw.

  • Aber in meinem ersten Test-Beispiel (siehe oben) benutze ich ja die Send-Funktion, die scheint also zu klappen.
    Und wenn ich jetzt noch wüsste was ne "ControlID" ist und wo ich das beim "AutoIT Window INfo" Tool finde, dann reicht das doch, um eine "Quick and Dirty" Lösung zu zaubern. Ich denke, mich jetzt noch in die fertigen Scripte wie FF.au3 einzuarbeiten nimmt zuviel Zeit in Anspruch.
    Ich muß halt ne Seite aufrufen, Benutzername und Kennwort angeben, und dann muß ich in einem Formular noch 2 mal Datum und Uhrzeit eingeben, allerdings das Datum vom vorigen Tag, damit ich komplette Logfiles von 0:00 Uhr bis 0:00Uhr habe...
    Gibt es da nen Lösungsansatz/Hilfe, wie ich es schaffe ein variables Datum in das Formular einzugeben...die Uhrzeit ist ja statisch, aber das Datum ist eigentlich immer das aktuelle Datum -1 tag, sprich gestern. Beim Monatswechsel ist es aber eben nicht der 0.te Tag, sondern mal der 30. oder der 31.

    Bin für alles Dankbar
    Gruß
    cybered

  • Guck mal bitte in die Hilfedatei... da wirst du unter den macros folgendes finden...

    [autoit]

    @MDAY
    @MON
    @YEAR

    [/autoit]

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

  • hab mir jetzt mal die FF.au3 Funktionen angesehen, und so richtig gebrauchen kann ich das anscheinend nicht. Es gibt irgendwie keine Funktion, um einen kompletten String in eine Formularzeile zu schreiben. Es gibt zwar die Funktion

    Code
    _FFKeyPress(ByRef $Socket, $iKeyCode[, $iTabIndex = -1])


    aber damit kann ich anscheinend keinen kompletten String in der Form "01-01-2008 0:00" ins Formular schreiben ?(
    Gibt es denn grundsätzlich eine bessere Methode, als einfach den Benutzer und seine Tastenanschläge zu simulieren. Ich würde einfach das "scripten" was ich als User auch mache...zB.

    Code
    Send ("{ENTER}")


    um das Formular abzuschicken. Das ist natürlich nicht so schön, aber anscheinend führt kein Weg daran vorbei :S Dann würde ich auch die ControlSend Methode nicht brauchen.
    Danke schon mal im Voraus
    Cybered (der scripten eigentlich ganz gut findet) :D

  • Gebrauchen kann man die FF.au3 schon, wenn man die richtigen Funktionen verwendet :D

    Zum Ausfüllen von Formular-Feldern gibt es z.B.:
    _FFSetValueByName
    oder
    _FFSetValueByID
    zu Absenden reicht zu 90% ein einfaches _FFSubmit($Socket) das wars dann schon.

    Ein einfaches Script zum Einloggen sieht dann z.B. so aus:

    Spoiler anzeigen
    [autoit]

    #include<FF.au3>

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

    $Socket = _FFStart("http://www.DaWoIchMichEinloggenMoechte.de",Default,2)

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

    If $Socket > -1 Then
    _FFSetValueByName($Socket,"NameInputName","MeinName")
    _FFSetValueByName($Socket,"PasswortInputName","MeinsPasswort")
    _FFFormSubmit($Socket)
    EndIf

    [/autoit]


    das wars.

    Und _FFKeyPress ist nicht zum Ausfüllen gedacht sondern nur um einen einzigen "Tastendruck" simulieren.

    Viele Grüße
    Stilgar