Aus einem AutoIt-Skript weitere AutoIt-Skripte starten ohne alles in ein Skript schreiben zu müssen

  • Hallo!

    Bin hier (sowohl im Forum, als auch in AutoIt :) ) ein absoluter Neuling :)

    Habe auch schon versucht das Forum zu durchsuchen. Wie ich z.B. aus

    http://www.autoit.de/index.php?page=Thread&postID=57866

    verstanden habe gibt es nur 2 Möglichkeiten.

    1. Alle Subskripte als Funktionen in den Hauptskript schreiben (schlecht, denn die Subskripte sollen von mehreren Hauptskripten wiederverwendet werden).

    2. Die Subskripte werden als exe-Files kompiliert und dann vom Hauptskript per ShellExecute aufgerufen. Bei exe-Kompilierung wird ja der Interpreter mit einkompiliert (ca. 290 KB). Heißt es dann, dass ich bei z.B. 100 Subskripten den Interpreter in jedem, also auch 100 mal einkompiliert haben muss?

    Hintergrund: ich möchte einige Programmtests automatisieren. Dazu müssen einzelne Subskripts erstellt werden (z.B. Login, Kunden eingeben, Bestellung eingeben, Bestellung drucken etc.).
    Für jedes Testszenario wird ein Hauptskript erstellt, welches aus einer CSV-Datei die nötigen Parameter ausliest und mit diesen Parametern einige der Subskripts startet.

    Gibt es keine einfachere Möglichkeit? Z.B. wie in Java (sorry für den Vergleich): andere Klasse mit entsprechenden Parametern aufrufen und Rückwerte erhalten. Und das Ganze dann in ein(!) jar-File verpacken?


    Vielen Dank für Eure Posts!

    Einmal editiert, zuletzt von Pavlik (29. Juni 2010 um 15:25) aus folgendem Grund: Oh.. ja. Problem gelöst. Schönen Dank! Irgendwie ist bei mir das gleiche in der Hilfe beschrieben nicht so richtig angekommen. Jetzt ist es mir aber klar geworden, dass man immer den "externen" Weg gehen muss :-)

  • . Die Subskripte werden als exe-Files kompiliert und dann vom Hauptskript per ShellExecute aufgerufen.


    Um den unnötigen Speicherverbrauch zu minimieren, behalte die Scripte im .au3 Format. Lediglich ein "Starter-Script" muss kompiliert werden.

    [autoit]

    If $CmdLine[0] = 0 Then Exit
    If Not FileExists($CmdLine[1]) Then Exit
    Run('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $CmdLine[1] & '"')

    [/autoit]

    Somit bleiben die Scripte unkompiliert, und du kannst sie einfach ausführen. (du kannst ihnen dann auch andere endungen geben. Zum Beispiel .arr statt .au3

    Das starter script ist natürlich optional, du kannst andere scripte auch direkt mit

    [autoit]

    Run('"' & @AutoItExe & '" /AutoIt3ExecuteScript "' & $sPfad & '"')

    [/autoit]


    aufrufen.

  • Oh.. ja!
    Irgendwie ist bei mir das gleiche in der Hilfe beschriebene nicht so richtig angekommen. Jetzt ist es mir aber klar geworden, dass man immer den "externen" Weg gehen muss :)
    Schönen Dank!