_IENavigate --> Get-Variablen übergeben

  • Hallo zusammen,

    kann es sein, dass man mit der Funktion _IENavigate keine Variablen über die URL übergeben kann?

    Folgendes funktioniert bei mir nicht (d.h. es kommt im entsprechenden Formular nix an... ($oIE wird natürlich vorher ordnungsgemäß erzeugt und auch korrekt angezeigt...)

    _IENavigate ($oIE, "test.testseite.de/pinfo.php?user=" & $user & "&pass=" & $pass)

    Danke für eure Unterstützung.

    Viele Grüße

    Daniel

    Einmal editiert, zuletzt von basementmedia (24. September 2012 um 15:06)

  • kann es sein, dass man mit der Funktion _IENavigate keine Variablen über die URL übergeben kann?


    Kann nicht sein, denn alles was im Eingabefeld des IEs funktioniert funktioniert auch mit AutoIt, du musst also irgendwo in deinem Skript einen Fehler haben poste es also bitte.

    mfg autoBert

  • Hi,

    hab den Code mal zusammengestutzt auf das Wesentliche:

    [autoit]


    #include "includes/IE.au3"
    #include "includes/GUIConstants.au3"
    #include "includes/WindowsConstants.au3"

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

    Global $gui, $oIE2

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

    $file = FileOpen("D:\docucheck\login.txt", 0)
    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    Else
    $user_sl=FileReadLine($file, 1)
    $pass_sl=FileReadLine($file, 2)
    EndIf

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

    MsgBox(0, "Benutzerdaten", "User:" & $user_sl & ", Passwort:" & $pass_sl) ; Wird korrekt ausgegeben, d.h. die Textdatei wird schon mal korrekt gelesen...

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

    $oIE2 = _IECreateEmbedded ()
    $gui = GUICreate("Background", 800, 600)
    ;$gui = GUICreate("", 169, 68, 20, 20, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_MDICHILD), $gui)
    $GUIActiveX = GUICtrlCreateObj($oIE2, 10, 10, 580, 650)
    GUISetState(@SW_Show)
    _IENavigate ($oIE2, "sltime.sl-i.de/pinfo.php?user=" & $user_sl & "&pass=" & $pass_sl)

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

    While 1
    Sleep(1000)
    WEnd

    [/autoit]

    Die PHP-Datei sieht folgendermaßen aus:

    PHP
    // Benutzerdaten einlesen --> FUNKTIONIERT ANSCHEINEND NICHT!
    $user_sl=$_GET["user"];
    $pass_sl=$_GET["pass"];
    
    
    // Hier kommt nämlich nichts an...
    echo "Daten:".$user_sl.", ".$pass_sl

    Habt ihr ne Idee, wo der Fehler liegen könnte?
    Das Auslesen der Messagebox klappt, aber in der PHP-Datei kommt nichts an...

    Grüßle

    Daniel

  • Füge einmal diese Zeile vor _IENavigate ein:

    [autoit]

    ConsoleWrite("sltime.sl-i.de/pinfo.php?user=" & $user_sl & "&pass=" & $pass_sl&@CRLF)

    [/autoit]

    Die Ausgabe in der Konsole gibst du dann im IE ein un du wirst sehen dies klappt auch nicht. Also musst du eie andere Technik benutzen, sieh dir dazu das 2. Beispiel von

    [autoit]

    _IEFormSubmit

    [/autoit]

    an,

    mfg autoBert

  • Hi,

    danke für den Tipp.
    Habs gleich mal versucht.
    Benutzername und Passwort werden in die entsprechenden Felder eingefügt, aber der Submit-Button wird nicht gedrückt.

    [autoit]


    ; Anmelden bei Zeiterfassung
    $file = FileOpen("D:\docucheck\login.txt", 0)
    ; Check if file opened for reading OK
    If $file = -1 Then
    MsgBox(0, "Error", "Unable to open file.")
    Exit
    Else
    $user_sl=FileReadLine($file, 1)
    $pass_sl=FileReadLine($file, 2)
    EndIf

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

    ;Seite laden
    _IENavigate ($oIE2, "testseite.test.de/login.php")

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

    ;Daten eintragen
    $oForm = _IEFormGetObjByName ($oIE2, "login")
    $uset = _IEFormElementGetObjByName ($oForm, "username")
    _IEFormElementSetValue ($uset, $user_sl)
    $pset = _IEFormElementGetObjByName ($oForm, "passwort")
    _IEFormElementSetValue ($pset, $pass_sl)

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

    ;Formular abschicken...geht nicht...
    _IEFormSubmit ($oForm)
    _IELoadWait($oIE2)

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

    ;das nachfolgende hab ich auch schon probiert
    ;$oSubmit = _IEGetObjByName ($oIE2, "einloggen")
    ;_IEAction ($oSubmit, "click")

    [/autoit]

    So sieht das Formular aus

    Man sieht nachdem man das Skript startet, wie ganz schnell die Werte in die Felder eingetragen und das Verschicken des Formulars anscheinend angestoßen wird. Danach erscheint aber wieder ein leeres ANmeldeformular, anstatt die gewünschte Folgeseite des passwortgeschützten Bereichs.
    Wenn ich das _IEFormSubmit rausnehme, also nur User und Passwort einsetzen lasse und selber auf "login" drück, funktionierts einwandfrei!

    Ich komm einfach nicht drauf!?
    Bin für jeden Tipp dankbar...

    Beste Grüße

    Daniel

  • Hi,

    nun funktionierts, habs damit gelöst:
    _IEAction ($oSubmit, "focus")
    ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")

    Viele Grüße

    Daniel