Befehle innerhalb einer For-Schleife addieren.

  • Hallöchen zusammen :)

    Ich beschäftige mich seit einiger Zeit mit der wunderbaren Welt von Autoit und komme dabei jeden Tag ein Stückchen weiter (jeden Tag mehr begeistert)
    Jedoch hat sich ein Problem aufgetan, was ich mit meinem derzeitien Wissen anscheinend nicht lösen kann (oder ich bin zu blöd *fg*)

    Folgendes:

    Ich möchte mich innerhalb einer Website automatisch bewegen. Dabei soll das script auf einen hyperlink springen, den Inhalt auf der geöffneten Seite teilweise herunterladen , wieder zurückspringen und den nächsten hyperlink öffnen. Dieser befindet sich allerdings jedesmal einen Tabulator-Sprung weiter entfernt.

    hier der problematische Auszug aus meinem Script:

    [autoit]


    Send("{CTRlDOWN}f{CTRlUP}Home") ; Ankerpunkt auf der Homepage um von dort mit einer festen Anzahl an Tabs den 1. Hyperlink zu erreichen
    Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}") ; Hyperlink wird angesprungen und geöffnet

    [/autoit]

    Das Skript funktioniert soweit einwandfrei, jedoch hat die Seite an die 400 Hyperlinks (jeder einen Tabsprung weiter von meinem "Ankerpunkt"-home entfernt.
    Ich könnte natürlich das obere 400 mal kopieren und bei

    [autoit]


    Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}")

    [/autoit]


    immer per hand ein weiteres {TAB} einfügen, aber das kanns ja nicht sein.

    Eine For Schleife ala

    [autoit]


    For $i = 1 to 100
    Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}")
    Next

    [/autoit]


    ist natürlich auch quatsch...

    Es wäre schön wenn ihr eine Lösung hierfür parat hättet. Ich küsse euch dafür auch die Füsse :D

    Einmal editiert, zuletzt von apidya (10. Juni 2009 um 21:52)

  • Mal davon abgesehen, dass es bestimmt eine einfachere Lösung gibt, hier mal ein Lösungsweg für deinen Wissensstand.

    [autoit]

    For $i = 1 To 400
    Send('{Tab '& $i & '}')
    Next

    [/autoit]

    Zur Info: ;) Es gibt eine UDF mit dem Namen IE.au3 ;) Damit kann man den Internet Explorer perfekt fernsteuern ohne den unsicheren Send-Befehl! ;)

  • Erstmal danke für die superschnelle Antwort (hab jetzt auch den Button für das Einfügen von Codes entdeckt *schäm*

    Er Tabbt jetzt fleissig 400 mal, allerdings erschließt sich mir jetzt noch nicht so ganz wie ich den rest vom string einfügen kann.
    Ich probiere jetzt mal mit deinem Beispiel weiter. Danke auch für den Tipp mit dem UDF, muss ich mir mal ansehen. :whistling: Grüße

  • Hallo,
    AutoIt hat mächtige Stringbearbeitungsfunktionen, aber für das einfache "aneinanderhängen" von Strings benutzt man in der Regel das kaufmännische und

    [autoit]

    $string = $teilstring1 & $teilstring2

    [/autoit]

    keinesfalls verwechseln mit dem plus!
    ciao
    Andy

  • hab jetzt auch den Button für das Einfügen von Codes entdeckt *schäm*


    Tu mir mal nen Gefallen und entdeck den Edit-Button..

    Und falls du Programm nur für dich bestimmt sein soll und bei dir der IE genauso langsam und buggy ist, wie bei mir, empfehle ich stark die FireFox Automatisierung von Stilgar zu benutzen -> FF/MozRepl

  • Habs Editiert. Danke nochmal für die vielen vielen Tipps.

    Ich nutze persönlich lieber den Firefox, von daher hilft mir der Link von ChaosKeks und der Tipp von Andy in Zukunft bestimmt extrem weiter.

    Das mit den Strings war/ist für mich so eine Sache. Zu beginn wollte ich die gängigsten Befehle zuerst als Variable ablegen und dann je nach Bedarf abrufen/aneinanderhängen, aber das hat nicht so recht funktioniert.

    Ausserdem habe ich noch nicht so recht verstanden, warum sich bei der For-Schleife innerhalb der Klammer

    [autoit]


    Send("{TAB "& $i & "}")

    [/autoit]

    noch 2 weitere Anführungszeichen und ein 2tes & befinden.

    Für mich liest es sich in Gedanken wie:
    "sende Tab mit/und Anzahl der For-Schleife und (nichts?), ende send.

    Aber das kommt noch mit der Zeit :D - ich bin euch schon jetzt dankbar.
    Liebe Grüße

  • Das & verbindet einfach nur Strings etc.. Weitergehend hat es keine bedeutung! Also würde die Zeile mit $i = 5 so lauten ->

    [autoit]

    Send("{TAB 5}")

    [/autoit]


    Das bedeutet einfach nur das Tab 5 mal gesendet werden soll! Wenn du aber jetzt ne For-Schleife durchlaufen lässt und bei jedem Mal die Anzahl an Tab-Drücken erhöhst wird insgesamt bei 400 Durchläufen in denen jedes mal um 1 Tab erhöht wird, 80200 mal Tab gedrückt!

    Aber wie gesagt, gewöhn dir das mal schnell wieder ab... Wenns geht sollte man niemals Fremdprogramme nur oberflächlich (also mit Tastendrücken) steuern!

  • *licht aufgeh*

    Hmm hätte ich das mal vorher gewusst ... ^^
    Ich möchte das ganze in Zukunft sowieso "professioneller" gestalten, aber jeder fängt mal klein an.

    Danke für die Erklärung, auch wenn es vorerst nicht die optimalste lösung ist, hab ichs jetzt wenigstens verstanden :) *bussi*