Robotics-Experte Christian Spindler zeigt anhand einer konkreten Anwendung, wie Sie mit Python kleine Microservices erstellen können. Zum Beispiel das automatische Befüllen von Formularen in einem Webbrowser.
Im Blog «Robotics Process Automation oder Demokratisierung von Daten?» habe ich verschiedene Ansätze verglichen, um digitale Transformation und Automatisierung umzusetzen. In diesem Beitrag zeige ich anhand eines einfachen Beispiels, wie die Automatisierung einfacher Aufgaben auch ohne komplexe, externe Software gelingen kann.
Das Beispiel ist dem Buch «Automate the boring stuff with Python» entnommen und für diesen Blog aufbereitet.
Formulare ausfüllen gehört zu den häufigsten Tätigkeiten in der Sachbearbeitung und eignet sich hervorragend dazu, automatisiert zu werden. Nehmen wir eine grosse Kundendatenbank in einem Excel-Arbeitsblatt, die Kunde für Kunde in ein Anwendungsformular eingegeben werden muss. Obwohl einige Anwendungen mittlerweile eine Import-Funktion mitbringen, die es erlaubt, eine Excel-Datei in die Anwendung hochzuladen, gibt es manchmal keinen anderen Weg, als die Daten Eintrag für Eintrag abzutippen. Dieser Blog zeigt, wie der Prozess dennoch automatisiert werden kann – komplett unter Verzicht auf teure Softwareprodukte.
Das Übungsformular für dieses Beispiel findet sich unter autbor.com.
Wir möchten dieses Formular für eine Vielzahl von Antworten automatisch durch ein handgemachtes RPA-Programm befüllen. Alles in allem sollte das RPA-Programm Folgendes tun:
Das sind die Funktionen, deren Umsetzung mit Python ich im Folgenden skizziere.
Das Python-Modul pyautogui verwendet, Mausbewegungen, Klicks und Tastatureingaben zu simulieren und damit den Computer automatisch zu bedienen. Wir beschränken uns dabei auf die konzeptionelle Umsetzung. Den vollständigen Code für dieses Beispiel finden Sie hier.
Ob man einen kommerzielle RPA-Anbieter oder eine Open Source-Lösung einsetzt, spielt keine wesentliche Rolle, die Ausgangsbasis ist jedoch stets ein genaues Verständnis des zu automatisierenden Prozesses. Wo im Formular muss mit der Maus geklickt werden? Welche Tastatureingaben werden erwartet? Wann müssen Buttons oder Links betätigt werden?
Das sind die einzelnen Schritte, um Daten in unser Formular einzugeben:
Alle diese Schritte bauen aufeinander auf. Es ist allerdings möglich, dass sich unterschiedliche Browser auf unterschiedlichen Betriebssystemen etwas anders verhalten. Dies sollte ausgiebig getestet werden.
Im Formular kann mit der Tabulator-Taste («TAB») von einem Feld zum Nächsten gesprungen werden. Dies machen wir uns zunutze: Als Einstiegspunkt ermitteln wir nur die (konstante) Position des ersten Eingabefeldes und klicken darauf, von dort aus geht es per Tastatur weiter.
Zu Beginn des Programms sollte das Browserfenster maximiert werden, um das Textfeld immer an derselben Stelle erscheinen zu lassen.
Nun werden die Koordinaten der beiden Positionen im Browser ermittelt, die sich nicht durch «TAB» erreichen lassen: Das «Name»-Textfeld im Formular und den «Submit another response»-Link auf der nächsten Website. Dazu dient ein in der Referenz beschriebenes Python-Skript, auf das wir hier nicht näher eingehen. Wichtig ist nur zu wissen, dass wir durch dieses Skript die Positionen von Mausklicks auf dem Bildschirm erhalten.
Nun benötigen wir die Daten, die in das Formular eingegeben werden sollen. Diese können in Geschäftsprozessen beispielsweise aus Tabellen-Arbeitsblättern, SAP oder von Websites kommen.
Hier ein Arbeitsblatt mit unseren Beispieldaten:
NAME | FEAR | SOURCE | ROBOCOP | COMMENTS |
![]() | ![]() | ![]() | ![]() | ![]() |
Alice | eavesdroppers | wand | 4 | Tell Bob I said hi. |
Bob | bees | amulet | 4 | n/a |
Carol | puppets | Crystal ball | 1 | Please take the puppets out of the break room |
Zur Eingabe der Daten wird jede Zeile aus dem Arbeitsblatt vom RPA-Programm ausgelesen und die Werte in das Formular eingetragen. Wir gehen wiederum nicht auf den genauen Programmcode ein.
Es ist jedoch oft sinnvoll, auf zwei Details zu achten:
Nun kann das erste Datensatz eingefügt werden durch:
Das Auswahlmenü für die «Wizards Powers»-Frage und die Optionsfelder für das «Robocop»-Feld sind etwas schwieriger zu behandeln, als die Textfelder. Um sie mit der Maus anzuklicken, müsste man die jeweiligen x- und y-Koordinaten einzeln ermitteln. Mit der Tastatur ist es etwas einfacher: es reicht aus, zu zählen, wie oft die Pfeiltasten bis zur jeweiligen Option gedrückt werden müssen. Zur Auswahl einer Option wird die Leertaste betätigt. Für das Robocop Feld sieht dies wie folgt aus:
Auf diese Weise können alle Textfelder, Auswahlmenüs und Optionsfelder eines Formulars ausgefüllt werden. Mit einem zusätzlichen «TAB» wird der Eingabefokus auf den «Submit»-Button gelegt. Die Folgewebsite mit ihrem «Submit another response»-Link wird geladen. Da wir die Koordinaten dieses Links im Vorfeld ermittelt haben, muss das Programm nun lediglich einen Klick auf diese Koordinaten, sprich auf den Link simulieren, und fertig: Das leere Formular erscheint und kann mit dem nächsten Datensatz befüllt werden.
Das RPA-Programm führt diesen Prozess für alle Personen im Datensatz durch. Im Beispiel sind nur 4 Personen dargestellt, bei einer Kundendatenbank mit 4’000 Einträgen ist diese Automatisierung jedoch sehr wertvoll.
Automatisierung mit Python pyautogui erlaubt es, Interaktionen mit Anwendungen auf dem PC durch Maus und Keyboard einfach zu automatisieren, ähnlich wie mit kommerzieller RPA Software.
Mit pyautogui können beliebige Mausbewegungen, Klicks und Tastatureingaben simuliert werden. Daneben kann pyautogui beispielsweise auch Farben auf dem Bildschirm erkennen, um beispielsweise die Position von Buttons zu validieren (diese kann sich während des Ladens einer Website durchaus ändern).
Alle diese Funktionen können kombiniert werden, um repetitive Aufgaben zu automatisieren. Dies ist natürlich nicht auf das Ausfüllen von Web-Formularen beschränkt. Da jede beliebige Anwendung genau wie durch einen menschlichen Nutzer bedient werden kann, können beispielsweise ebenso automatisch generierte (bspw. aus SAP ausgelesene) Daten in einen Bericht zusammengefasst und dieser per E-Mail versendet werden.
Nächste Schritte in der Automatisierung von Prozessen können die Einbindung von Standardprozeduren sein, die oftmals gleich ablaufen. Zum Versenden einer E-Mail muss beispielsweise nicht das Mail-Programm explizit durch Mausklick geöffnet werden, sondern ein Python-Microservice kann sich direkt auf dem E-Mail Server anmelden und die Nachricht versenden.
Dieser Beitrag zeigt, wie Automatisierung durch modulare, Open Source-basierte Software effektiv umgesetzt werden kann. Microservices sind ein wertvoller Schritt, Daten und Systeme in Unternehmen interoperabel zu machen. Ich freue mich Sie in einem nächsten Blog darüber zu informieren.
Automatisierung von Geschäftsprozessen: Starten Sie mit der FinanzfunktionEchtzeit-Reporting, Automatisierung von Transaktionen, interne Audits sowie Continuous Accounting: im Tageskurs «CFO 4.0 – Die Finanzfunktion als Profit-Center» mit Trainer Christian Spindler erhalten Finanzleiter, Finanzberater, Verwaltungsratmitglieder, Digitalverantwortliche, Controller sowie Buchhalter das notwendige Wissen und praktische Handlungsempfehlungen für eine nachhaltige Transformation der Finanzfunktion. |
Echtzeit-Reporting, Automatisierung von Transaktionen, interne Audits sowie Continuous Accounting: im Tageskurs «CFO 4.0 – Die Finanzfunktion als Profit-Center» mit Trainer Christian Spindler erhalten Finanzleiter, Finanzberater, Verwaltungsratmitglieder, Digitalverantwortliche, Controller sowie Buchhalter das notwendige Wissen und praktische Handlungsempfehlungen für eine nachhaltige Transformation der Finanzfunktion.
Kommentar