Formular auf Webseite Automatisch ausfüllen. ... Hilfe

  • Hallo miteinander,

    ich möchte ein Formular automatisch ausfüllen lassen, das klappt ach schon sehr gut, doch ein Element in diesem Formular bekomme ich einfach nicht ausgefüllt.
    Daher meine Frage ob ihr mir etwas Helfen könnt.

    Leider ist das Formular in einem B2B Shop bei den man sich zuerst mit einem Passwort einloggen muss somit kann ich euch leider keinen Link zum Formular geben :( .

    Wie ich bisher auf das Formular zugreife:

    AutoIt
    ; ********** 7.9)  Suchanfrage auf Webseite eintragen **************************
    
    
    		$oForm = _IEFormGetObjByName ($oIE, "searchGenericNumber")				; Innerhalb dieser Webseite gibt es ein Formular - Wir holen uns einen Zeiger auf dieses Formular
    		$oQuerySuche = _IEFormElementGetObjByName ($oForm, "searchGenericArticleNumber")	; Wir holen uns eien Zeiger auf das Such Elemente
    		_IEFormElementSetValue ($oQuerySuche,StringStripWS($aArray_Suche[$i_Suche],3))		; Wert in das vorgesehende Feld eintragen    ""StringStripWS"" Führende und nachfolgende Leerstellen


    Die Suchbegriffe kommen aus einer Text Datei.

    Jetzt habe ich Hinter diesem Feld eine Select Box in die ich gerne einen Wert eintragen möchte, doch ich bekomme das einfach nicht hin :(


    Habe mal einen kleinen teil des Quellcodes der Webseite kopiert hoffe das reicht.


    Würde mich Rissig freuen wenn mir jemand dabei Helfen würde das ich Auswahl 3 in die Select Box rein geschrieben bekomme.


    gruß Mücke

    EDIT: ich mache das ganze im IE ! nicht im FF.

  • Naja ist doch klar warum das so nix wird. Du willst das Form Element mit der Auswahlliste manipulieren. Dieses Formelement ist eindeutig bezeichnet (name="brandno" und id="wearpartsManufacturer"), es bleibt dir überlassen ob du id oder name verwendest um das Element zu ermitteln.

    Deine Elementsuche liefert dir aber das Input Feld mit der Bezeichnung name="searchGenericArticleNumber".

    Desweiteren kannst du als Wert für eine Auswahlliste wie hier keinen Text setzen, sondern du musst stattdessen die value id verwenden.

    Vorgehensweise also:

    1. Form Objekt ermitteln
    2. Element Objekt ermitteln
    3. Einen erlaubten Wert für das Element Objekt setzen (hier nur Zahlen)

  • Achja ich würde mir an deiner Stelle außerdem mal die winhttp.au3 anschauen anstatt den IE oder FF zu automatisieren. Direkte HTTP Posts versenden ist um ein vielfaches performanter.

  • Da ich das Script soweit schon fertig habe, würde ich nur sehr ungern es neu schreiben in dem ich mich in die "winhttp.au3" einlese, was bei einem Neuen Projekt jedoch bestimmt Sinnvoll ist.

    Ich bin mir nicht sicher ob ich dir folgen kann.

    1. Form Objekt ermitteln
    das sollte damit gehen.

    AutoIt
    $oForm = _IEFormGetObjByName ($oIE, "searchGenericNumber")

    2. Element Objekt ermitteln
    das sollte damit gehen.

    AutoIt
    $oQuerySuche = _IEFormElementGetObjByName ($oForm, "searchGenericArticleNumber")

    3. Einen erlaubten Wert für das Element Objekt setzen
    das sollte damit gehen.

    AutoIt
    _IEFormElementSetValue ($oQuerySuche,"Mein Suchbegriff")

    So das ist die Vorgehensweise beim Imputierend, jetzt möchte ich die Select Box Finden.

    Das Formular habe ich ja schon gefunden also muss ich das ja nicht mehr suchen.
    Dann muss ich jetzt die Box finden.
    das würde ich so machen.

    AutoIt
    $oQuerySuche = _IEFormElementGetObjByName ($oForm, "brandno")

    Und jetzt muss ich das Element setzen.

    das würde ich so machen.

    AutoIt
    _IEFormElementSetValue ($oQuerySuche,"113")

    Mein vollständiger Code würde also so ausschauen.

    AutoIt
    $oForm = _IEFormGetObjByName ($oIE, "searchGenericNumber")
    $oQuerySuche = _IEFormElementGetObjByName ($oForm, "searchGenericArticleNumber")
    _IEFormElementSetValue ($oQuerySuche,"Mein Suchbegriff")
    $oQuerySuche = _IEFormElementGetObjByName ($oForm, "brandno")
    _IEFormElementSetValue ($oQuerySuche,"113")

    Mein Suchbegriff wird eingetragen, die Select box bleibt einfach unverändert , ich bekomme auch keine Fehlermeldung.
    Was habe ich Falsch verstanden?


    Gruß Mücke

  • Nicht so voreillig. Nur weil du nichts von der Auswahl siehst bedeutet das nicht, dass der Wert nicht korrekt gesetzt wurde. Teste was passiert wenn du das Formular abschickst. (Form submit Button)

  • OK, das hab eich nicht getestet, bin davon ausgegangen wie beim Imputierend das ich die Eingabe sehen würde.

    Es ist tatsächlich hinterlegt. dann hatte das doch schon geklappt ich bin nur zu Kurzsichtig gewesen es zu erkennen.

    Danke.

    kann man das Feld auch so verändern das es mit drin steht was ausgewählt wurde?

    Aber schon mal eine RISSEN DANK, das erleichtert mir unheimlich meine Arbeit.

    DANKE.

  • kann man das Feld auch so verändern das es mit drin steht was ausgewählt wurde?

    Keine Ahnung. Ist aber eigentlich nicht nötig. Normalerweise sendest du das Formular ohnehin automatisiert ab und hast garkeine Zeit die Auswahl oder andere Inhalte zu sehen. Wenn du vor dem Absenden verifizieren möchtest, dass alles wie gewünscht gesetzt wurde kannst du dies mit _IEFormElementGetValue() prüfen.

    Die Funktion _IEFormElementOptionSelect() wäre diesbezüglich aber vielleicht noch ein Versuch wert.

  • ja du hast recht, man sollte das Formular Automatisch versenden.

    Da jedoch der Shop Betreiber das Automatische Durchsuchen der Seite untersagt, habe ich hier die Klicks noch alle von Hand mit drin.

    Damit wird das nicht Automatisch gemacht sondern immer noch von einem Menschen ;) ich hoffe das zumindest.

    werde mir den befehl _IEFormElementOptionSelect() genauer anschauen. Danke.