Auslesen des html mit IE.au3

  • hallo, ihr wisst ja das ich sehr schlecht englisch kann (nicht alle :) ) die "Hilfe des IE.au3 ist ja bis jetzt nur in englisch"
    könnte mir mal einer das script beispiel erklären?
    und wie ich an diese werte komme.

    Code
    f und q

    wenn ich mir das script mit ein paar sleeps verlangsamme, finde ich keinen sinn des "f".
    das "q" scheind die das eingabe feld von google zu sein, nur woher bekomme ich diese info, das daß eingabefeld eine bestimmte bezeichnung hat.
    mit der "window info" ja nicht.

    [autoit]

    #include <IE.au3>
    $oIE = _IECreate ("http://www.google.com")
    $oForm = _IEFormGetObjByName ($oIE, "f")
    $oQuery = _IEFormElementGetObjByName ($oForm, "q")
    _IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
    _IEFormSubmit ($oForm)

    [/autoit]

    Doktore

    • Offizieller Beitrag
    [autoit]

    $oIE = _IECreate ("http://www.google.com")

    [/autoit]

    Das Objekt für die Seite "www.google.com" wird erzeugt und der Variablen "$oIE" zugewiesen

    [autoit]

    $oForm = _IEFormGetObjByName ($oIE, "f")

    [/autoit]

    Erzeugt eine Referenz zu einer Form in deinem Objekt "$oIE"

    [autoit]

    $oQuery = _IEFormElementGetObjByName ($oForm, "q")

    [/autoit]

    Erzeugt eine Referenz zu einem Element auf der Form "f" deines Objekts "$oIE".

    [autoit]

    _IEFormElementSetValue ($oQuery, "AutoIt IE.au3")

    [/autoit]

    Setzt den Wert für das ausgewählte Formelement

    EDIT:
    Muß was korrigieren. Da war ich etwas zu schnell beim Lesen.

    "f" ist der Name der Form die du auswählen willst.
    "q" analog der Name des auszuwählenden Elements.
    Wo du die herbekommst? - Ich denke mal aus dem Seitenquelltext.

    • Offizieller Beitrag

    Hi!

    Hier der Quelltext der Seite https://autoit.de/www.google.de, um die es ja scheinbar geht:


    f ist das Formular, das so definiert wird:

    Zitat

    <form action="/search" name=f><script>


    q ist das Eingabefeld. So wird es angelegt:

    Zitat

    <input maxlength=2048 name=q size=55 title="Google-Suche" value="">

    peethebee

  • ok, das mit google war ja nur das beispiel.

    bei mir dregt es sich um diese seite

    hier

    was ich bis jetzt heraus gefunden habe ist das erste eingabefeld (linke oben)

    Code
    login

    und das linke unten

    Code
    password

    aber der name von

    [autoit]

    _IEFormGetObjByName

    [/autoit]


    fehlt mir noch :(

    ihr seit da ja recht fit, wie müsste das script hier aussehen?

    danke schon mal :)

    Doktore

  • [autoit]


    #include <IE.au3>
    $sUrl = "http://www.roboform.com/php/pums/pums_usrlogfrm.php?lang=de"
    $oIE = _IECreate ($sUrl,0,1) ;($sUrl,0,1) browser sichtbar...($sUrl,0,0) browser unsichtbar
    $oForm = _IEFormGetCollection ($oIE, 'frmOrderSearch');oder ($oIE, 0)(sucht die erste form in website) möglich
    $sUsername = InputBox ( "Username", "Bitte geben Sie Ihren Benutzernamen ein:" , "Benutzername", " ", 50,140)
    $oUsername = _IEFormElementGetObjByName ($oForm, "Name")
    _IEFormElementSetValue ($oUsername, $sUsername)

    $oPassword = _IEFormElementGetObjByName ($oForm, "OrderID")
    $sPassword = InputBox ( "Bestell-ID", "Bitte geben Sie Ihre Bestell-ID ein ein:" , "bestell-id" , " " , 50, 140)

    _IEFormElementSetValue ($oPassword, $sPassword)
    _IEFormSubmit ($oForm)

    [/autoit]


    ich weiß ja nicht wie du pw eingibst etc ich habs jetzt einfach mal über ne input box gemacht..browser kannste auch verstecken
    PS:getestet und geht ;)
    @edit ups des zweite ist keen passwort^^
    und es wird nicht überprüft ob die werte im gültigkeitsbereichliegen(zweite box max länge = 15 zeichen oder sowas)

  • ja danke euch, eure sachen gehen :)

    ok zum test

    so geht es, bin auch auf die jeweiligen namen im html quelltext jetzt auch gestossen :)

    [autoit]

    #include <IE.au3>
    $oIE = _IECreate ("http://www.roboform.com/php/pums/pums_usrlogfrm.php?lang=de")
    _IELoadWait($oIE)
    $oForm = _IEFormGetObjByName ($oIE, "frmOrderSearch")
    $oQuery1 = _IEFormElementGetObjByName ($oForm, "Name")
    _IEFormElementSetValue ($oQuery1, "Ich")
    $oQuery2 = _IEFormElementGetObjByName ($oForm, "OrderID")
    _IEFormElementSetValue ($oQuery2, "1111")
    ;_IEFormSubmit ($oForm)

    [/autoit]

    nur wie sieht es mit den rechten beiden feldern aus?

    der einzige unterschied, was ich gefunden habe, ist das das zweite feld rechts untern "Email" heißt".
    der rest ist (für mich) gleich :(

    [autoit]

    #include <IE.au3>
    $oIE = _IECreate ("http://www.roboform.com/php/pums/pums_usrlogfrm.php?lang=de")
    _IELoadWait($oIE)
    $oForm = _IEFormGetObjByName ($oIE, "frmOrderSearch")
    $oQuery1 = _IEFormElementGetObjByName ($oForm, "Name")
    _IEFormElementSetValue ($oQuery1, "Ich")
    $oQuery2 = _IEFormElementGetObjByName ($oForm, "Email")
    _IEFormElementSetValue ($oQuery2, "sag@ich.net")
    ;_IEFormSubmit ($oForm)

    [/autoit]

    Doktore

  • hi,
    Bei mehreren gleichnamigen Formularen kannst Du mit dem Index arbeiten:

    [autoit]


    #include <IE.au3>
    $oIE = _IECreate ("http://www.roboform.com/php/pums/pums_usrlogfrm.php?lang=de")
    _IELoadWait($oIE)
    $oForm = _IEFormGetCollection ( $oIE, 1 ) ;das zweite Formular auf der Seite
    $oQuery1 = _IEFormElementGetObjByName ($oForm, "Name")
    _IEFormElementSetValue ($oQuery1, "Ich")
    $oQuery2 = _IEFormElementGetObjByName ($oForm, "Email")
    _IEFormElementSetValue ($oQuery2, "sag@ich.net")

    [/autoit]
  • hehe danke :)

    ich frage mich jetzt nur, was hier wohl das bessere ist.

    [autoit]

    $oForm = _IEFormGetCollection ( $oIE, 0 )

    [/autoit]

    oder

    [autoit]

    $oForm = _IEFormGetObjByName ($oIE, "frmOrderSearch")

    [/autoit]

    Doktore

  • ich davon würde das erste davon bevorzugen..aber solange beide funktionieren ist das ansichtssache...
    beim späteren und öfteren verbessern des codes ist es auch viel besser und meist übersichtlicher bei gleichnahmigen funktionen die per index anzusprechen...

  • Dr.Galvany

    Im Grunde ist es egal welche Variante Du verwendest solange die vorhandenen Formulare unterschiedliche Namen haben. Ist das der Fall, würde ich den tatsächlichen Namen verwenden. Wenn es mehrere Formulare mit dem gleichen Namen gibt, mußt Du das gewünschte Formular per Index ansprechen.

    Einmal editiert, zuletzt von jonk (13. November 2006 um 08:54)