Feld wird nicht ausgefüllt

  • Ich möchte ein Suchfeld ausfüllen.
    Weiß jemand was an diesem Code falsch ist?

    [autoit]


    #include <IE.au3>
    $oIE = _IECreate ("http://www.hunde.de/")
    _IELoadWait ($oIE)
    $oForm = _IEFormGetObjByName ($oIE, ""); Das Problem: Das Formular hat keinen Namen
    $oQuery = _IEFormElementGetObjByName ($oForm, "SEARCHSTRING")
    _IEFormElementSetValue ($oQuery, "Dackel")
    _IEFormSubmit ($oForm)

    [/autoit]

    Das Suchfeld heißt SEARCHSTRING
    In dieses Suchfeld soll Dackel eingetragen werden
    Die Form selbst hat keinen Namen

    Dieses Beispiel ist in der Hilfe

    [autoit]


    #include <IE.au3>
    $oIE = _IECreate ("http://www.google.com")
    $oForm = _IEFormGetObjByName ($oIE, "f"); Das funktioniert: Die Form hat einen Namen!
    $oQuery = _IEFormElementGetObjByName ($oForm, "q")
    _IEFormElementSetValue ($oQuery, "AutoIt IE.au3")
    _IEFormSubmit ($oForm)

    [/autoit]

    Der einzige Unterschied ist, dass in meinem Beispiel das Formular
    keinen Namen hat! Was macht man in diesem Fall?

    Ich krieg's einfach nicht zum laufen

    2 Mal editiert, zuletzt von Ilse (13. Oktober 2010 um 15:25)

  • den index der Form angeben

    z.B 0 für die erste form usw

    [autoit]

    #include <IE.au3>
    $oIE = _IECreate ("http://www.hunde.de/")
    _IELoadWait ($oIE)
    $oQuery = _IEGetObjByName ($oIE, "SEARCHSTRING")
    _IEFormElementSetValue ($oQuery, "Dackel")

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

    #include <IE.au3>

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

    $oIE = _IECreate("http://www.hunde.de/")
    ;~ $oIE_Tab1 = _IECreateTab($oIE, "http://www.hunde.de/", 0)

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

    $oQuery = _IEGetObjByName ($oIE, "SEARCHSTRING")
    _IEAction($oQuery,"click")
    _IEFormElementSetValue ($oQuery, "Dackel")

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

    $oSuchen = _IESearchButton($oIE, '/images/tpl/go.gif')
    _IEAction($oSuchen,"click")

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

    $oTab = _IECreateTab($oIE,"http://www.hunde.de/")

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

    Func _IESearchButton($o_object, $s_String)
    $o_objects = $o_object.document.GetElementsByTagName("input")
    For $o_obj In $o_objects
    If StringInStr($o_obj.OuterHTML,$s_String) Then
    Return $o_obj
    EndIf
    Next
    EndFunc ;==>_IESearchFormbyAction

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

    Func _IECreateTab($o_object, $s_Url, $f_wait = 1)
    If Not IsObj($o_object) Then
    __IEErrorNotify("Error", "_IENavigate", "$_IEStatus_InvalidDataType")
    Return SetError($_IEStatus_InvalidDataType, 1, 0)
    EndIf
    If Not __IEIsObjType($o_object, "documentContainer") Then
    __IEErrorNotify("Error", "_IENavigate", "$_IEStatus_InvalidObjectType")
    Return SetError($_IEStatus_InvalidObjectType, 1, 0)
    EndIf
    $o_object.navigate2($s_Url, 2048)
    Sleep(1000)
    Local $o_object2 = _IEAttach($s_Url, "url")
    If Not IsObj($o_object2) Then
    __IEErrorNotify("Error", "_IECreateEmbedded", "", "WebBrowser Object Creation Failed")
    Return SetError($_IEStatus_GeneralError, 0, 0)
    EndIf
    If $f_wait Then
    _IELoadWait($o_object2)
    EndIf
    Return $o_object2
    EndFunc ;==>_IECreateTab

    [/autoit]


    so in etwa ?

  • Hallo Ezzorra,

    bin so froh daß du dich wieder gemeldet hast.
    Hab die ganze Zeit noch rumprobiert, ging aber alles nicht.
    Ich bin gerade mit deinem Script am probieren. DANKE! ;)

    Was mir aufgefallen ist

    [autoit]


    $oSuchen = _IESearchButton($oIE, '/images/tpl/go.gif')

    [/autoit]

    du verwendest diesen Befehl.
    Ich habe aber mehrere Seiten die ich mir zusammengestellt habe.
    D.h. ich müsste für jede Seite den Suchbutton herausfinden.

    Geht das nicht mit dem _IEFormSubmit?
    Da könnte ich mir viel Arbeit sparen.

  • _ieFormSubmit geht NUR wenn du das Formular mit einer ID oder einen NAmen deklariert hast UND es nur für die suche bestimmt ist.

    Aber da dieses nunmal hier nicht geht kannst du keine 0815 INI erstellen und glauben das klappt immer. den diese Form bezieht sich nicht wie im Normalfall auf das Suchfeld sndern auf das gesmmte header und woher soll ein Submit wissen was du eigendlich willst.

  • Hallo Ezzorra,

    kannst du mir erklären, was
    du damit gemeint hast?

    Zitat

    _ieFormSubmit geht NUR wenn du das Formular mit einer ID oder einen NAmen deklariert hast UND es nur für die suche bestimmt ist.

    ok, das heißt

    [autoit]


    For $i=1 to 10
    ;$links kommen von der ini
    $oIE = _IECreate($Link, 1); hier steht z.B. die erste Adresse u.s.w.
    $oForm = _IEFormGetCollection($oIE, 1); kann ich hier den index der Form fest vergeben?
    $oFeld = _IEFormElementGetObjByName($oForm, 'keywords')
    _IEFormElementSetValue($oFeld, "Dackel")
    _IEFormSubmit($oForm)

    [/autoit]

    Was ich noch nicht verstanden habe ist:

    Zitat

    ...den index der Form angeben z.B 0 für die erste form usw


    heißt das,

    [autoit]


    $oForm = _IEFormGetCollection($oIE, 1)

    [/autoit]


    diesen Wert muß ich bei jedem TAB erhöhen?

    Daß automatisch ein neuer Tab gemacht und gewartet wird
    bis geladen ist, das hab ich auch noch nicht hingekriegt.


    [autoit]


    For $i=1 to 10
    ;$links kommen von der ini
    $oIE = _IECreate($Link, 1); hier steht z.B. die erste Adresse u.s.w.
    $oTab = _IECreateTab($oIE,$Link) ; das klappt leider noch nicht
    $oForm = _IEFormGetCollection($oIE, 1); kann ich hier den index der Form fest vergeben?
    $oFeld = _IEFormElementGetObjByName($oForm, 'keywords')
    _IEFormElementSetValue($oFeld, "Dackel")
    _IEFormSubmit($oForm)
    next
    ;..............................................................................>Tab Funktion

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

    Func _IECreateTab($o_object, $s_Url, $f_wait = 1)
    If Not IsObj($o_object) Then
    __IEErrorNotify("Error", "_IENavigate", "$_IEStatus_InvalidDataType")
    Return SetError($_IEStatus_InvalidDataType, 1, 0)
    EndIf
    If Not __IEIsObjType($o_object, "documentContainer") Then
    __IEErrorNotify("Error", "_IENavigate", "$_IEStatus_InvalidObjectType")
    Return SetError($_IEStatus_InvalidObjectType, 1, 0)
    EndIf
    $o_object.navigate2($s_Url, 2048)
    Sleep(1000)
    Local $o_object2 = _IEAttach($s_Url, "url")
    If Not IsObj($o_object2) Then
    __IEErrorNotify("Error", "_IECreateEmbedded", "", "WebBrowser Object Creation Failed")
    Return SetError($_IEStatus_GeneralError, 0, 0)
    EndIf
    If $f_wait Then
    _IELoadWait($o_object2)
    EndIf
    Return $o_object2
    EndFunc ;==>_IECreateTab

    [/autoit]


    Würde mich freuen, wenn du dich wieder meldest

    Ilse ;)

    Einmal editiert, zuletzt von Ilse (14. Oktober 2010 um 16:15)

  • Ja ich meld mich aber es wird dir nicht freun was ich dir sage

    Du hast überhaupt keine ahnung was die befehle bewirken, deshalb empfehle ich dir mal die Deutsche hilfe zu den _IE befehlen zu lesen ( um alles zu verstehen musst ich mich auch tagelang in die funktionen Reinknien.

    Der index des Elements heist welche anordnung es hat im Quelltext

    Das OBERSTE hat 0 und dann sumiert sich das ganze runter , also jedes nächste hat +1

    In dem Fall alle Spaten die mit <form beginnen

    Das Objekt , also der Browser ist $oIE = _IECreate ( also $oIE )
    dieses Spichst du mit den Funktionen an z.B. $oIE_Form =_iegetobjbyid($oIE,"Iddeselements")
    Nun hast du den Browser ( $oIE ) und die Form $oIE_Form die ja bekanntlich in Browser $oIE ist da du sie dort rausgefischt hast.

    willste das Tab Ansprechen
    $oIE_Tab = _IETabCreate($oIE,Link)

    nun ist $oIE unser MAIN Window und $oIE_tab unser tab

    dementsprechend währe $oIE_Form =_iegetobjbyid($oIE_Tab,"Iddeselements") ein auslesen aus dem tab

  • Guten Morgen Ezzora,

    merci für deine Ausführungen und Erklärungen.
    Ich lerne jeden Tag etwas neues, lese viel
    und habe täglich neue Hürden vor mir weil ich es lernen möchte.

    Deswegen bin ich hier und ich freue mich, daß es so
    Menschen gibt wie du, die mit viel Geduld versuchen
    zu helfen,
    Danke!
    ;) Ilse

  • hallo hier ist der code für ddas suchfeld

    Spoiler anzeigen
    [autoit]


    #include <IE.au3>
    $oIE = _IECreate ("http://www.hunde.de/")
    _IELoadWait ($oIE)
    $oForm = _IEFormGetCollection ($oIE, 0); Das Problem: Das Formular hat keinen Namen
    $oQuery = _IEFormElementGetObjByName ($oForm, "SEARCHSTRING")
    _IEFormElementSetValue ($oQuery, "Dackel")
    _IEFormSubmit ($oForm)

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