Robotics Process Automation selbstgemacht im Unternehmen
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 und ähnliche, repetitive Tätigkeiten
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 erste Textfeld des Formulars anklicken
- Feld für Feld Informationen eintragen
- Den «Submit»-Butten anklicken
- Diesen Prozess mit dem nächsten Datensatz wiederholen
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.
Schritt 1: Den Prozess verstehen
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:
- Klicken auf das Feld «Name»
- Namen eingeben und die Tabulator-Taste («TAB») drücken
- «Greatest Fear» eingeben und «TAB» drücken
- Die Pfeiltaste nach unten eine korrekte Anzahl oft drücken um die «wizard power source» aus dem Dropdown-Menü auszuwählen. Dann «TAB» drücken
- Die Pfeiltaste nach rechts eine korrekte Anzahl oft drücken, um die «Robocop» Frage zu beantworten. Dann «TAB» drücken
- Einen zusätzlichen Kommentar eingeben und «TAB» drücken
- «ENTER» drücken um den «Submit»-Button zu betätigen
- Nach Absenden des Formulars erscheint im Browser ein Link, um zum Formular zurückzukehren. Diesen Link klicken um die Schritte mit dem nächsten Datensatz zu wiederholen.
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.
Schritt 2: Koordinaten ermitteln und Daten erheben
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 |
Schritt 3: Daten eingeben
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:
- Jedes Mal, nachdem das Formular vollständig befüllt wurde, wartet das Programm 5 Sekunden, ob es der Benutzer abbrechen möchte, falls es beispielsweise etwas Unerwartetes tut.
- Zu Beginn einer neuen Eingabe wartet das Programm ab, bis die Website mit dem Formular vollständig geladen ist, um alle Eingaben zu ermöglichen.
Nun kann das erste Datensatz eingefügt werden durch:
- Klicken auf die zuvor ermittelten Koordinaten, an denen sich das Namensfeld befindet
- Eingabe des Namens («Alice»)
- Eingabe des «TAB»-Zeichens
- Eingabe des Werts für «Fear» und so weiter
Schritt 4: Auswahlmenüs und Optionsfelder bearbeiten
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:
- Für Option 1: 0 Mal Pfeil nach rechts (da man nach Eingabe von «TAB» aus dem Auswahlmenü direkt davor direkt in der ersten Option landet), dann «Leertaste».
- Für Option 2: 1 Mak Pfeil nach rechts, dann «Leertaste», und so weiter.
Schritt 5: Das Formular absenden und warten
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.
Zusammenfassung
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.