Zum Inhalt

Beispielarbeiten · KI & Automation

GUI-Automation: Aufträge in eine Altanwendung ohne Schnittstelle eintragen

Ein Bedienroboter trägt Aufträge aus einer CSV-Datei über die Oberfläche in eine Altanwendung ein. Er erkennt Dialoge und Fehler, wartet bei gesperrter Datenbank und setzt nach einem Absturz fort, ohne etwas doppelt zu erfassen.

Musterarbeit (Demo), kein Kundenauftrag. Gebaut als Probeaufgabe mit erfundenen Beispieldaten; die Prüfzahlen unten stammen aus dem automatischen Prüflauf und sind nicht geschönt.

Was gebaut wurde

  • Eingaben über die Fenster der Anwendung, ohne Zugriff auf ihre Datenbank
  • Dialoge wie gesperrte Datenbank oder Pflichtfeld-Fehler werden erkannt und behandelt
  • Fortschritt wird gemerkt; nach einem Absturz wird abgeglichen statt doppelt erfasst

auftraege-beispiel.csv herunterladen

Nur für erlaubte Abläufe: mit Zustimmung des Softwareinhabers und ohne Umgehung von Sicherheitssperren. Ändert sich die Oberfläche, braucht der Roboter Nachpflege.

Wie geprüft wurde

Automatischer Prüflauf vom 22.10.2026, aus dem Protokoll (Testdaten erfunden, Zahlen gemessen):

  • Altanwendung (tkinter, eigener Prozess, keine API) mit Anmeldung, Kundensuche, Pflichtfeldmaske, Dialogen 'Datenbank beschaeftigt'/Validierungsfehler, langsamer Speicherung und Absturz nach dem 12. Commit. 30 CSV-Auftraege ueber die Oberflaeche (pywinauto win32

Grenzen

Was diese Probe nicht abdeckt, steht hier, damit niemand mehr erwartet:

  • Nur erlaubte Ablaeufe: Bedienroboter nur mit Zustimmung des Softwareinhabers bzw. wenn die Lizenz automatisierte Bedienung erlaubt; keine Umgehung von CAPTCHAs, Anmeldesperren oder anderen …
  • Oberflaechenaenderungen brechen den Roboter: er kennt Maskentitel, Tab-Reihenfolge, F-Tasten und Dialogtitel; ein Update der Altanwendung verlangt Nachpflege. Abgefangen ist nur, dass er es merkt …
  • Tk-Anwendungen (wie hier) haben keine Bedienungshilfen-Schnittstelle: Feldinhalte sind fuer den Roboter nicht lesbar, gepostete Mausklicks wirken nicht. Geprueft wird deshalb ueber den Text des …
  • Tastatur-Nachrichten werden direkt an die Fenster gesendet (kein SendInput, kein Fokusraub). Manche Programme lesen Tasten nur ueber den echten Tastaturzustand (Strg/Alt-Kombinationen, DirectInput …
  • Keine Doppelerfassung haengt an einer Abgleichmoeglichkeit in der Oberflaeche (hier Belegsuche per Fremdbeleg). Hat die Altanwendung keine Suche nach einem eindeutigen Merkmal, bleibt nach einem …
  • Bildschirmfotos ueber PrintWindow funktionieren auch bei verdeckten Fenstern, nicht bei minimierten und nicht nach dem Absturz (dann nur Protokollzeile)
  • Ein Roboter, eine Anwendungsinstanz, eine Windows-Sitzung; gesperrter Bildschirm oder abgemeldete Sitzung halten ihn an. Durchsatz hier ca. 1 Datensatz je Sekunde (inkl. langsamer Speicherung)

Bericht

# GUI-Automation: 30 Auftraege in eine Altanwendung ohne Schnittstelle

Samen 20261022. Soll: 24 gueltige Auftraege genau einmal, 6 fehlerhafte im Protokoll, Absturz nach dem 12. gespeicherten Auftrag (EXT-0013, gespeichert aber unbestaetigt).

| Kennzahl | Robust | Gegenprobe A (ohne Fortschrittsdatei) | Gegenprobe B (ohne Dialogerkennung) |
|---|---|---|---|
| Auftraege in der App-DB | 24 | 36 | 20 |
| Doppelerfassungen | 0 | 12 | 0 |
| Fehlende gueltige | 0 | 0 | 4 |
| Ungueltige in der DB | 0 | 0 | 0 |
| Feldwert-Abweichungen | 0 | 0 | 0 |
| Als fehlerhaft protokolliert | 6 | 6 | 0 |
| Neustarts nach Absturz | 1 | 1 | 1 |
| Prozesse am Ende | 0 | 0 | 0 |

Robust zusaetzlich: 9 Wiederholungen nach 'Datenbank beschaeftigt', Belegsuchen nach Absturz [('EXT-0013', True)], 15/15 Bildschirmfotos mit Inhalt.

## Abweichungen vom Soll
- **robust**: 0
- **ohne_fortschritt**: 1
  - 12 Doppelerfassungen: ['EXT-0002', 'EXT-0003', 'EXT-0004', 'EXT-0005', 'EXT-0006', 'EXT-0007', 'EXT-0008', 'EXT-0009']
- **ohne_dialogerkennung**: 3
  - 4 gueltige Auftraege fehlen: ['EXT-0003', 'EXT-0006', 'EXT-0012', 'EXT-0030']
  - Fehlerprotokoll [] statt ['EXT-0001', 'EXT-0014', 'EXT-0017', 'EXT-0019', 'EXT-0020', 'EXT-0024']
  - als bestaetigt gemeldet 30, Soll 24 (zu viel: ['EXT-0001', 'EXT-0014', 'EXT-0017', 'EXT-0019', 'EXT-0020'])

## Vorgehen des Roboters
- pywinauto (win32): Fenster/Dialoge des Anwendungsprozesses finden, Titel und Dialogtext lesen
- Eingaben als WM_CHAR/Tab/F-Tasten einzeln direkt an die Anwendung gesendet, kein globaler Tastendruck
- Warten auf Zustaende (Titel, Dialog da/weg, Prozess lebt) mit Frist, keine festen Pausen
- 'Datenbank beschaeftigt': bis 3 Wiederholungen, dann fehlerhaft; Validierungsfehler und unbekannte Kunden: Foto, Protokoll, Maske abbrechen
- Fortschrittsdatei (atomar): begonnen vor F2, bestaetigt nach Bestaetigungsdialog; nach Absturz Neustart, Anmeldung, Belegsuche fuer Unbestaetigte, dann weiter

## Grenzen
- Nur erlaubte Ablaeufe: Bedienroboter nur mit Zustimmung des Softwareinhabers bzw. wenn die Lizenz automatisierte Bedienung erlaubt; keine Umgehung von CAPTCHAs, Anmeldesperren oder anderen Sicherheitsmechanismen - die Zugangsdaten kommen vom Kunden, der Roboter meldet sich an wie ein Mensch
- Oberflaechenaenderungen brechen den Roboter: er kennt Maskentitel, Tab-Reihenfolge, F-Tasten und Dialogtitel; ein Update der Altanwendung verlangt Nachpflege. Abgefangen ist nur, dass er es merkt (Titel/Dialog unerwartet -> Foto, Protokoll, Abbruch statt Blindtippen)
- Tk-Anwendungen (wie hier) haben keine Bedienungshilfen-Schnittstelle: Feldinhalte sind fuer den Roboter nicht lesbar, gepostete Mausklicks wirken nicht. Geprueft wird deshalb ueber den Text des Bestaetigungsdialogs und die Belegsuche der Anwendung. Bei Win32/WinForms/WPF/Java-Access-Bridge-Programmen gehen Felder direkt (set_edit_text/invoke ueber UIA) - das ist hier nicht belegt
- Tastatur-Nachrichten werden direkt an die Fenster gesendet (kein SendInput, kein Fokusraub). Manche Programme lesen Tasten nur ueber den echten Tastaturzustand (Strg/Alt-Kombinationen, DirectInput, Citrix/RDP-Bildschirme): dort braucht es Vordergrund und echte Eingaben oder Bilderkennung - nicht belegt
- Keine Doppelerfassung haengt an einer Abgleichmoeglichkeit in der Oberflaeche (hier Belegsuche per Fremdbeleg). Hat die Altanwendung keine Suche nach einem eindeutigen Merkmal, bleibt nach einem Absturz zwischen Speichern und Bestaetigung nur: anhalten und einen Menschen fragen
- Bildschirmfotos ueber PrintWindow funktionieren auch bei verdeckten Fenstern, nicht bei minimierten und nicht nach dem Absturz (dann nur Protokollzeile)
- Ein Roboter, eine Anwendungsinstanz, eine Windows-Sitzung; gesperrter Bildschirm oder abgemeldete Sitzung halten ihn an. Durchsatz hier ca. 1 Datensatz je Sekunde (inkl. langsamer Speicherung)

So etwas für deinen Betrieb?

Beschreib kurz, was du brauchst. Du bekommst einen Festpreis, bevor ich anfange; ohne dein Ja passiert nichts.

Zur Werkstatt