Formular wird nicht gefüllt

  • Für meinen VPN-Zugang möchte ich den Usernamen automatisch befüllen lassen. Die Anmeldung geschieht über den Internet-Explorer 9.

    Ich habe mir aus den Beispielen das vorgegebene Script genommen und an meine Seite angepasst. Leider funktioniert das nicht.

    [autoit]

    #include <IE.au3>
    $oIE = _IECreate()
    _IENavigate($oIE,"https://ssl-eu1.t-systems.com/dana-na/auth/url_default/welcome.cgi") ; VPN-Login aufrufen

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

    $oFormular = _IEFormGetCollection($oIE,"frmLogin") ; Forumular festlegen

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

    $oUsername = _IEFormElementGetObjByName($oFormular,"username") ; Eingabefeld bestimmen

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

    _IEFormElementSetValue($oUsername,"test") ; Username eintragen

    [/autoit]


    Ich bekomme immer Fehlermeldungen:

    Code
    --> IE.au3 V2.4-0 Warning from function _IEFormGetCollection, $_IEStatus_NoMatch
    --> IE.au3 V2.4-0 Error from function _IEFormElementGetObjByName, $_IEStatus_InvalidDataType
    --> IE.au3 V2.4-0 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType

    Hier noch ein Ausschnitt des Quellcodes der Seite. Eigenltich müsste es doch passen...

    Wo liegt mein Denkfeher?

    Danke.

    Einmal editiert, zuletzt von lionking (27. September 2011 um 14:26)

  • Nimm nicht

    [autoit]

    _IEFormGetCollection

    [/autoit]


    sondern

    [autoit]

    _IEFormGetObjByName

    [/autoit][autoit]

    #include <IE.au3>
    $oIE = _IECreate()
    _IENavigate($oIE,"https://ssl-eu1.t-systems.com/dana-na/auth/url_default/welcome.cgi") ; VPN-Login aufrufen

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

    $oFormular = _IEFormGetObjByName($oIE,"frmLogin") ; Forumular festlegen

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

    $oUsername = _IEFormElementGetObjByName($oFormular,"username") ; Eingabefeld bestimmen

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

    _IEFormElementSetValue($oUsername,"test") ; Username eintragen

    [/autoit]
  • bei mir trägt er es ein.

    Was für eine Meldung kriegst du denn?
    Diesselbe Fehlermeldung kann nicht sein, weil du ne andere Funktion nutzt

  • Hmm, komisch, nach einem Rechnerneustart läuft es jetzt.

    Zusatzfrage:

    Durch folgende Ergänzung möchte ich den Focus auf das Passwort-Feld setzen, damit ich dieses gleich eingeben kann.
    Das Feld lässt sich grundsätzlich ansprechen, das habe ich mit einem Text, den ich testweise übermittelt habe, getestet.
    Allerdings wird mir immer nur die Adresszeile des Browsers aktiv gezeigt.

    [autoit]

    $oFocus = _IEFormElementGetObjByName($oFormular,"password")

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

    _IEAction ($oFocus, "focus")

    [/autoit]


    Danke für die Unterstützung.

  • Aus der Hilfe:

    [autoit]

    ; *******************************************************
    ; Beispiel 2 - Ähnlich wie Beispiel 1, nur dass hier dem gewünschten Element der Fokus übergeben
    ; wird und dann über ControlSend() Enter gesendet.
    ; Verwende diese Technik, wenn Skripte im Browser verhindern,
    ; dass AutoIt das Ende der Aktion mitbekommt und das Skript fortgesetzt wird.
    ; *******************************************************
    ;
    #include <IE.au3>
    $oIE = _IE_Example ("form")
    $oSubmit = _IEGetObjByName ($oIE, "submitExample")
    $hwnd = _IEPropertyGet($oIE, "hwnd")
    _IEAction ($oSubmit, "focus")
    ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{Enter}")

    [/autoit]


    --EDIT-- Habs grade ausprobiert, der Fokus wird zwar gesetzt , aber man ist immernoch in der Adresszeile.
    Ich würde es mit einem Mouseclick versuchen, sonst weiß ifch aber auch nicht weiter

  • Herzlichen Dank. Der Hinweis hat die Lösung gebracht.

    Hier noch mal das fertige Script für die Bedienung der Juniper VPN Software:

    [autoit]

    #include <IE.au3>

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

    $url = IniRead("junfill.ini", "VPN" , "URL", "") ; URL Login-Seite einlesen
    $username = IniRead("junfill.ini", "VPN" , "Username", "") ; Benutzername einlesen
    $form = IniRead("junfill.ini", "VPN" , "Formular", "") ; Formularname einlesen
    $user = IniRead("junfill.ini", "VPN" , "Feld", "") ; Eingabefeld für Benutzername einlesen

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

    $oIE = _IECreate()
    _IENavigate($oIE,$url) ; Login-Seite aufrufen
    $oFormular = _IEFormGetObjByName($oIE,$form) ; Formular festlegen
    $oUsername = _IEFormElementGetObjByName($oFormular,$user) ; Eingabefeld bestimmen
    _IEFormElementSetValue($oUsername,$username) ; Username eintragen
    $hwnd = _IEPropertyGet($oIE, "hwnd")
    ControlSend($hwnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "{TAB}") ; Focus auf Passwort-Feld setzen

    [/autoit]

    Hier noch die nötige ini-Datei:

    Code
    [VPN]
    URL=https://ssl-eu1.t-systems.com/firma
    Username=username@vpn.de
    Formular=frmLogin
    Feld=username