Anfänger-Hilfe bei Script

  • Hallo zusammen,

    bin seit geraumer Zeit auch AutoIT-Benutzer. Ich verwende das Programm hauptsächlich um in meiner Firma die selbst programmierte Software zu testen mit Masseneingaben etc.! Nebenbei gesagt ich bin kein Programmierer!

    Das Funktioniert soweit auch ganz gut! Innerhalb der Software kommen bei gewissen Eingaben oder interaktionen auch gewisse Hinweis- oder Fehlermeldung, die ich gerne automatisch bestätigen möchte. Diese Fenster erscheinen also nicht generell sondern z.B. nur beim auftreten einer gleichen Eingabe. Das eingefügte Script macht z.B. eine Masseneingabe von Aktions-Preisen für unterschiedliche Artikel.

    Spoiler anzeigen
    [autoit]

    For $i=10 to 15
    Send("!dapa")
    WinWaitActive("Aktions-Preise")
    Send(""&$i&"{Tab 7}")
    For $j=1 to 5
    $Down=Random(1,99,1)
    $Preis=Random(1,999,1)
    $Komma=Random(1,99,1)
    Send("{Enter}")
    WinWaitActive("Artikel suchen")
    Send("{Down " & $Down & "}!o")
    Sleep(300)
    WinWaitActive("Aktions-Preise")
    Send("{Tab}"&$Preis&","&$Komma&"{Tab}!o")
    Next
    Send("!s")
    WinWaitActive("Hauptfenster")
    Next

    [/autoit]
    [autoit]

    Send("{Tab}"&$Preis&","&$Komma&"{Tab}!o")

    [/autoit]

    Nach dem

    [autoit]

    !o") ;bestätigen des OK-Buttons

    [/autoit]

    Kann es vorkommen, dass eine Fehlermeldung erscheint, wenn z.B. dieser Artikel schon mal in der Liste erfasst wurde.
    Ich möchte jetzt das Fenster "Fehler" automatisch schließen, aber nur wenn es aufpoppt, ansonsten soll die Schleife weiterlaufen!

    Hoffe habe mich versändlich ausgedrückt und die Frage ist nicht zu "dämlich" für die Poweruser?! ;(

    Danke schon mal.

    2 Mal editiert, zuletzt von Soulflyer (27. Oktober 2010 um 10:13)

  • Danke für deine schnelle Antwort!

    Funktioniert leider nicht! Wie o.g. das Fenster poppt nicht immer auf sondern nur bei gewissen Konstellationen und das möchte ich dann unterdrücken!

    Nein das ist eine Meldung aus der Software z.B. "Dieser Artikel existiert bereits etc.!" Keine AutoIT MsgBox!

    2 Mal editiert, zuletzt von Soulflyer (26. Oktober 2010 um 16:38)

  • Dann mal mit demAu3info.exe die Class/ID und alle relevanten Infos auslesen.

    EDIT:
    Dann könnte man das so machen

    [autoit]

    WinActive("[TITLE:Login; CLASS:SunAwtDialog]")
    WinActivate("[TITLE:Login; CLASS:SunAwtDialog]")
    sleep(100)
    Send($user)

    [/autoit]

    MfG
    Der_Doc

  • Ja gerade gemerkt mit dem then! Geht leider nicht! Meldung bleibt immer noch nach erscheinen dann stehen!?

    Bestätige ich es per Eingabe läuft die schleife weiter?

    Habe es jetzt so eingefügt:

    Spoiler anzeigen
    [autoit]

    For $i=10 to 15
    Send("!dapa")
    WinWaitActive("Aktions-Preise")
    Send(""&$i&"{Tab 7}")
    For $j=1 to 5
    $Down=Random(1,99,1)
    $Preis=Random(1,999,1)
    $Komma=Random(1,99,1)
    Send("{Enter}")
    WinWaitActive("Artikel suchen")
    Send("{Down " & $Down & "}!o")
    Sleep(300)
    WinWaitActive("Aktions-Preise")
    Send("{Tab}"&$Preis&","&$Komma&"{Tab}!o")
    If WinActive("[TITLE:Fehler; CLASS:#32770]") Then
    Send("{Return}")
    EndIf
    Next

    [/autoit]
  • [autoit]

    Send("{Return}")

    [/autoit]


    wird nicht funktionieren.

    Entweder

    [autoit]

    Send("{ENTER}")

    [/autoit]


    wenns eine MsgBox ist ansonsten

    [autoit]

    If WinActive("[TITLE:Fehler; CLASS:#32770]") then
    WinKill("[TITLE:Fehler; CLASS:#32770]")
    EndIf

    [/autoit]
  • Klappt leider immer noch nicht!

    Software von meiner Firma ist mit DELPHI für Firebird SQL geschrieben!
    Weiß nicht ob es da unterschiede geben kann? Habe es auch schon mit MouseClick versucht!

  • [autoit]

    If WinWaitActive("[TITLE:Fehler; CLASS:#32770]", "", 1) then ; 1 = eine Sekunde
    WinClose("[TITLE:Fehler; CLASS:#32770]")
    EndIf

    [/autoit]

    ?

  • Klappt immer noch nicht.

    Alle konstellationen ausprobiert:

    Spoiler anzeigen
    [autoit]

    For $j=1 to 5
    $Down=Random(1,99,1)
    $Preis=Random(1,999,1)
    $Komma=Random(1,99,1)
    Send("{Enter}")
    WinWaitActive("Artikel suchen")
    Send("{Down " & $Down & "}!o")
    Sleep(300)
    WinWaitActive("Aktions-Preise")
    Send("{Tab}"&$Preis&","&$Komma&"{Tab}!o")
    Sleep(300)
    If WinActive("[TITLE:Fehler; CLASS:#32770]") then
    WinKill("[TITLE:Fehler; CLASS:#32770]")
    EndIf
    Next

    [/autoit]

    Hoffe das hilft vielleicht!?

    2 Mal editiert, zuletzt von Soulflyer (27. Oktober 2010 um 10:15)

  • Aaah ich habe es gefunden! Es war die falsche Stelle wo es eingesetzt werden musste!

    Das

    [autoit]

    WinWaitActive("Aktions-Preise")

    [/autoit]

    davor war das Problem. Er hat also immer auf das Fenster gewartet aber in dem Moment war schon das Fehler-Fenster offen!

    Vielen Dank allen für die Hilfe!!! :thumbup: