Beiträge von A55

    Ich versuche im Internet-Explorer automatisch ein Input-Feld zu füllen. Den Fokus setzen auf das Eingabefeld funktioniert, aber die Texteingabe hat nur nach IE-Neustart funktioniert. Der Code dazu:


    Code
    #include <IE.au3>
    ;...
    Local $oIE = _IEAttach ("WebsiteTitle","windowtitle")
    Local $hWnd = _IEPropertyGet($oIE, "hwnd")
    WinActivate ( "WebsiteTitle" )
    ;$oTitleInputField = _IEGetObjById($oIE, "design_design_title")
    $oTitleInputField = _IEGetObjById($oIE, "design_primary_tag")
    _IEAction($oTitleInputField, "focus")
    ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "blubb" & "{Enter}")
    ;ControlSend($hWnd, "", "[CLASS:Internet Explorer_Server; INSTANCE:1]", "blubb")

    Das Fokus setzen funktioniert richtig, je nachdem, ob ich die Zeile mit design_design_title oder design_primary_tag einkommentiere, erscheint der Cursor nach Ausführen des Scriptes blinkend im richtigen Input-Feld.


    Nur das ControlSend hat erst nach einem Internet-Explorer-Neustart funktioniert.

    Es kann sein, dass ich einige weitere Tabs im IE offen hatte. Vielleicht waren das alles

    neue Instanzen und mein Fenster nicht INSTANCE:1(?)


    Kann ich ControlSend irgenwie ändern, so dass nicht die IE-Instanz entscheidend ist, sondern

    der Titel der Website?

    Auf shir tee . com. Aber das ganze nur mit Mausklicks und Send zu steuern könnte evtl. doch ziemlich aufwendig werden.

    Um Produktfarben auszuwählen, muss man dort z.B. auf einen Button klicken, wodurch dann ein Feld aufgeht, in dem man bis zu 14 Farben auswählen kann, wobei das Auswahlfeld aber umso kleiner wird je mehr Farben man ausgewählt hat, da diese Farbe dann aus dem Auswahlfeld verschwindet und in ein Feld der ausgewählten Farben übernommen wird. D.h. die Maus-Position, auf die man im Auswahfeld klicken muss, ändert sich ständig und hängt auch von der Reihenfolge ab, in der ich auf Farben klicke.

    Das ganze wird evtl. über JavaScript gesteuert und Auswahlfelder werden evtl. erst erstellt, nachdem man ein anderes Auswahlfeld angeklickt hat. Und es gibt auch verschiedene Fenster, die verschiedenartig aufgebaut sind, in denen man Produktfarben auswählen kann. Und dann müssen noch Felder für die Produktbeschreibung ausgefüllt werden. Und es sollen noch automatisch Dateien aus einem bestimmten Verzeichnis hochgeladen werden. Also im Prinzip soll folgendes durch AutoIt automatisiert werden:


    Lese eine Excel-Datei vollständig ein, die Dateinamen, Beschreibung etc. des Designs enthält (wie ich eine Excel-Datei einlesen kann, weiß ich schon, da brauche ich keine Hilfe mehr).


    1. Uploade erste bzw. nächste PNG-Datei mit dem Dateinamen aus der Excel-Datei (dabei kann man die Datei entweder per Drag & Drop in den Browser ziehen oder sie auf klassischem Weg öffnen (der Explorer öffnet sich und man wählt die Datei aus.)


    2. Lege unterschiedliche Produkte (T-Shirt, Poster, Tasse etc. (das Produkt muss man jeweils aus einer Dropdown-Box auswählen)) mit jeweils mehreren Farben an und übernehme Titel und Beschreibung aus der Exceldatei (das erstreckt sich evtl. über mehrere unterschiedlich aufgebaute Webseiten, d.h. evtl. muss man erst alle Produkte anlegen, auf Next klicken und kann dann erst die Farben anlegen).


    3. Lege Preise für die unterschiedlichen Produkte fest (z.Zt. habe ich noch keine Produktpreise in der Exceltabelle stehen, d.h. z.Zt. sollte AutoIt an dieser Stelle unterbrechen, so dass ich manuell die Produktpreise in die Felder des Webformulars eintragen kann, danach sollte AutoIt dann fortgesetzt werden.


    4. Sind alle Dateien, deren Namen in der Exceltabelle stehen, geuploadet?

    Nein: gehe zu 1.

    Ja: Ende

    Mein Ziel ist es, Eingabefelder eines Webformulars automatisch auszufüllen. Bisher verwende ich dazu nur MouseClick und Send. (Wenn ich das richtig verstanden habe, soll das ganze mit ControlClick ja präziser gehen und man kann damit wohl auch nicht sichtbare Elemente ansteuern, aber das ganze ist auch aufwendiger, weshalb ich vorerst bei MouseClick bleiben möchte).

    Mit MouseClick kann ich nur auf sichtbare Steuerelemente klicken. Deshalb muss ich nach unten scrollen, um die entsprechende Felder anklicken und mit Send etwas hineinschreiben zu können. Als Alternative könnte ich mit Send("{DOWN}") nach unten scrollen, aber ich wüßte trotzdem gerne, wie ich die Scrollbar von AutoIt aus direkt auf einen bestimmten Wert setzen kann.

    Ich versuche, mit folgendem Code die vertikale Scrollbar eines Browser-Fensters mittig zu positionieren (Position 100 von 200):

    Doch der letze Befehl bringt Chrome zum halben Absturz (Browser läuft noch, aber das gesamte Browserbild wird schwarz), während bei Firefox nichts zu geschehen scheint (Scrollbalken bleibt auf "Start"-Position 0 ganz oben).


    Ich denke, das zurückgegebene Handle sollte richtig sein. Denn als Gegenprobe habe ich mal einen anderen Tab geöffnet und dann wird das Handle 0x00000000 zurückgegeben.


    Warum kann ich mit meinem Code den vertikalen Scrollbalken eines Chrome- bzw. Firefox-Browsers nicht setzen und was muss ich an meinem Code ändern, um es zu können?

    Ist es möglich, Teile eines AutoIt-Scriptes auszuführen, indem man die Zeilen markiert, die ausgeführt werden sollen?


    Wenn ja, kann man dann auch nicht zusammenhängende Zeilen markieren und wie geht das? Und was muss man nach dem Markieren der Zeilen drücken, um die markierten Zeilen auszuführen?


    Oder ist es die einzige Möglichkeit, die Teile eines Scriptes, die nicht ausgeführt werden sollen, auszukommentieren?