- Versionshinweise
- Erste Schritte
- Einstellung und Konfiguration (Setup and Configuration)
- Automationsprojekte
- Abhängigkeiten
- Workflow-Typen
- Dateivergleich
- Beste Praktiken für die Automatisierung (Automation Best Practices)
- Workflowdesign
- UI-Automatisierung (UI Automation)
- Projektorganisation
- Automatisierungs-Lifecycle
- Integration der Quellenkontrolle
- Debugging
- Das Diagnose-Tool
- Workflow-Analyse
- Über die Workflow-Analyse
- ST-NMG-001 – Namenskonvention für Variablen
- ST-NMG-002 – Namenskonvention für Argumente
- ST-NMG-004 – Duplizierung des Anzeigenamens
- ST-NMG-005 – Variable überschreibt Variable
- ST-NMG-006 – Variable überschreibt Argument
- ST-NMG-008 – Variablenlänge überschritten
- ST-NMG-009: Datentabellenvariablen mit Präfix versehen
- ST-NMG-011 – Datentabellenargumente mit Präfix versehen
- ST-NMG-012 – Standardwerte für Argumente
- ST-NMG-016 – Argumentlänge überschritten
- ST-DBP-002 – Hohe Anzahl von Argumenten
- ST-DBP-003 – Leerer Catch-Block
- ST-DBP-007 – Mehrere Flussdiagrammebenen
- ST-DBP-020 – Nicht definierte Ausgabeeigenschaften
- ST-DBP-023 – Leerer Workflow
- ST-DBP-024 – Prüfung der Persistenzaktivität
- ST-DBP-025 – Voraussetzung für Variablenserialisierung
- ST-DBP-026 – Verwendung der Verzögerungsaktivität
- ST-DBP-027 – Bewährte Methode für Persistenz
- ST-DBP-028 – Voraussetzung für Argumentenserialisierung
- ST-USG-005 – Hartcodierte Aktivitätsargumente
- ST-USG-009 – Nicht verwendete Variablen
- ST-USG-010 – Nicht verwendete Abhängigkeiten
- ST-USG-014 – Paketbeschränkungen
- ST-USG-020 – Minimale Protokollmeldungen
- ST-USG-024 – Nicht verwendet, gespeichert für später
- ST-USG-025 – Missbrauch gespeicherter Werte
- ST-USG-026 – Aktivitätseinschränkungen
- ST-USG-027 – Erforderliche Pakete
- Variablen
- Argumente
- Importierte Namespaces
- Aufzeichnung
- UI-Elemente
- Kontrollfluss
- Selektoren
- Objekt-Repository
- Data-Scraping
- Bild- und Textautomatisierung
- Automatisierung von Citrix-Technologien
- RDP-Automatisierung
- SAP-Automation
- VMware Horizon-Automatisierung
- Protokollierung
- Das ScaleCoordinates-Migrationstool
- Das Tool ScreenScrapeJavaSupport
- Das WebDriver-Protokoll
- StudioPro
- Erweiterungen
- Fehlersuche und ‑behebung
- Internet Explorer x64
- Microsoft Office Interop-Probleme
- Erkennen von UI-Elementen in PDF mit Zugriffsoptionen.
- Erkennen von UI-Elementen nach Windows-Aktualisierungen.
- JxBrowser-Anwendungen
- Überwachung der Benutzerereignisse (User Events Monitoring)
- Java in App-V
- Microsoft App-V – Unterstützung und Einschränkungen
- Citrix-Fehlerbehebung
UI-Automatisierung (UI Automation)
In manchen Fällen ist die normale, manuelle Routine nicht optimal für die Automatisierung. Untersuchen Sie sorgfältig das Verhalten der Anwendung und die Integration/Features von UiPath, bevor sie sich für einen bestimmten Ansatz entschließen.
Die UI-Automatierung wird am besten eingesetzt, wenn Roboter und Anwendungen auf dem gleichen Computer laufen, weil UiPath dann direkt mit der Technologie hinter der Anwendung integrieren kann, um Elemente zu identifizieren, Events auszulösen und die Daten „hinter den Kulissen“ abzurufen.
UiPath verwendet drei Methoden, um eine Klicken- oder Eingeben in-Aktivität auf einer Anwendung auszulösen. Doe werden als Eigenschaften in allen Aktivitäten angezeigt, die mit der UI-Automatisierung arbeiten.
Die Eigenschaften „SimulateType“ und „SimulateClick“
Wenn die Eigenschaft SimulateType oder SimulateClick ausgewählt wird, verbindet sich Studio mit der Anwendung und löst den Ereignishandler eines angegebenen UI-Elements aus (Schaltfläche, Textfeld). Das Ergebnis ist immer abhängig von der Zieltechnologie, wie z. B. einem Webbrowser oder einer Geschäftsanwendung.
Es wird dringend empfohlen, den Zustand des Ziel-UI-Elements vor der Ausführung zu überprüfen, wenn Sie SimulateType oder SimulateClick für die folgenden Aktivitäten aktivieren:
Dieselbe Empfehlung sollte auch für die unten aufgeführten Anwendungen beachtet werden, da diese standardmäßig die Eigenschaft SimulateType oder SimulateClick verwenden und nicht geändert werden können:
Die AlterIfDisabled-Eigenschaft
Die Eigenschaft weist die Zielaktivität an, ob sie mit deaktivierten Elementen interagieren soll oder nicht. Bitte beachten Sie, dass diese Eigenschaft nur berücksichtigt wird, wenn SimulateType oder SimulateClick aktiviert ist. Sie finden die AlterIfDisabled-Eigenschaft für die folgenden Aktivitäten:
Die Eigenschaft „SendWindowMessages“
Wenn die Eigenschaft SendWindowMessages ausgewählt ist, postet Studio die Eventdetails in der Anwendungsnachrichtenschleife und die Fensterprozedur der Anwendung verteilt sie intern an das Ziel-UI-Element.
Studio signalisiert Systemtreibern mithilfe von Hardware-Events, auch wenn keine der obigen Optionen ausgewählt sind, und es lässt das Betriebssystem die Details zum Zielelement verteilen.
Diese Methoden sollten in der vorgestellten Reihenfolge ausprobiert werden, da die Eigenschaften SimulateClick und SendWindowMessages schneller sind und auch im Hintergrund arbeiten. Sie sind jedoch weitestgehend von der Technologie hinter der Anwendung abhängig.
Hardware-Events funktionieren zu 100 %, da Studio Aktionen wie ein menschlicher Betreiber ausführt, wie beispielsweise das Bewegen eines Mauszeigers und das Klicken auf eine bestimmte Position. In diesem Fall muss die zu automatisierende Anwendung jedoch auf dem Bildschirm sichtbar sein. Dies könnte als Nachteil angesehen werden, da das Risiko besteht, dass der Benutzer in die Automatisierung eingreifen kann.
Manchmal schlagen die automatisch generierten Selektoren volatile Attributwerte vor, um Elemente zu identifizieren. In diesem Fall ist eine manuelle Intervention erforderlich, um die Selektoren zu kalibrieren. Ein zuverlässiger Selektor sollte das gleiche Element in allen Zuständen, in Entwicklungs-, Test- und Produktionsumgebungen und unabhängig von den bei der Anwendung angemeldeten Benutzernamen erfolgreich identifizieren.
Hier ein paar Tipps, wie ein Selektor in Selector Editor oder Ui Explorer verbessert werden kann:
- Ersetzen Sie Attribute mit volatilen Werten mit Attributen, die gleichmäßig und aussagekräftig aussehen.
- Ersetzen Sie variable Teile eines Attributwerts mit Platzhaltern (*).
- Falls der Wert eines Attributs ausschließlich aus Platzhaltern besteht (z. B.
name=’*’
), dann sollte es entfernt werden. - Wenn die Bearbeitung der Attribute nicht hilft, versuchen Sie mehr dazwischengeschaltete Container hinzuzufügen.
-
Vermeiden Sie die Verwendung des Attributs
idx
, es sei denn sein Wert ist eine sehr kleine Nummer, wie 1 oder 2.
Im obigen Selektor haben wir bemerkt, dass der Seitentitel eine Referenz zu der Zeit hat, zu dem der Selektor aufgezeichnet wurde, und dass einige Attribute zufällig aussehende IDs haben. Indem wir die Attribute optimieren, erhalten wir einen besseren Selektor als den, denn der UiPath-Aufzeichner vorgeschlagen hatte.
Ähnlich wie Dateipfade können Selektoren vollständig oder partiell (relativ) sein. Vollständige Selektoren beginnen mit einem Fenster oder einer HTML-ID und haben alle erforderlichen Informationen, um ein Element auf dem gesamten Desktop zu finden. Partielle Selektoren funktionieren nur in einem Anhang/Container, der das Fenster der oberste Ebene festlegt, in dem sich die Elemente befinden sollen:
- OpenBrowser
- OpenApplication
- AttachBrowser
- AttachWindow
Hier noch ein paar weitere Informationen zu Vollständigen vs. partiellen Selektoren.
Es gibt mehrere Vorteile, Container mit partiellen Selektoren anstelle von vollständigen Selektoren zu verwenden:
- Visuelle Gruppierung von Aktivitäten, die auf der gleichen Anwendung funktionieren.
- Etwas schneller, weil nicht jedes Mal nach dem obersten Fenster gesucht wird.
- Die Verwaltung von Selektoren der obersten Ebene ist einfacher, falls manuelle Aktualisierungen erforderlich sind.
- Essenziell, wenn an zwei Instanzen der gleichen Anwendung gearbeitet wird.
Die Bild-Automatisierung ist der letzte Ansatz bei der Automatisierung von Anwendungen, wenn nichts anderes funktioniert, um UI-Elemente auf dem Bildschirm zu identifizieren (wie Selektoren oder Tastaturkürzel). Weil bei der Bildübereinstimmung Elemente vollständig auf dem Bildschirm sichtbar sein müssen und alle sichtbaren Details während der Laufzeit und während der Entwicklung die gleichen sein müssen, muss bei der Bild-Automatisierung besondere Sorgfalt angewendet werden, damit der Prozess zuverlässig abläuft. Wenn mehr/weniger eines Bildes ausgewählt wird als notwendig, kann dies dazu führen, dass das Bild nicht gefunden wird oder zu einer Falsch-Positiv-Übereinstimmung.
Die Bildübereinstimmung hängt sehr von Umgebungsvariationen wie dem Desktop-Design oder der Bildschirmauflösung ab. Wenn die Anwendung in Citrix läuft, sollte die Auflösung größer oder gleich derjenigen sein, die beim Aufzeichnen der Workflows angewendet wurde. Andernfalls können kleine Bildabweichungen durch eine leichte Verringerung des Genauigkeitsfaktor des erfassten Bildes kompensiert werden. Überprüfen Sie, wie das Anwendungslayout sich an verschiedene Auflösungen anpasst, um die Nähe zu visuellen Elementen sicherzustellen, besonders in dem Fall von auf Koordinaten basierenden Techniken, wie der relative Klick oder der relative Scrape.
Falls die Automatisierung unterschiedliche Auflösungen unterstützt, können parallele Aufzeichnungen innerhalb einer PickBranch-Aktivität platziert werden, und der Roboter kann zwischen den beiden Übereinstimmungen auswählen.
Wenn OCR ein gutes Ergebnis für die Anwendung zurückgibt, ist die Text-Automatisierung eine gute Alternative zur Minimierung der Umgebungsbeeinflussing. Die Google Tesseract-Engine funktioniert besser für kleinere Bereiche, und Microsoft MODI für größere.
Wenn Sie die MODI-Engine in Schleifenautomatisierungen verwenden, kann dies gelegentlich zu Speicherverlusten führen. Daher wird empfpohlen, dass das Scraping mit MODI über einen separaten Workflow ausgeführt wird, unter Verwendung der Eigenschaft Isoliert (Isolated).
Wenn die Anwendung sich nicht in dem Zustand befindet, in dem der Workflow annimmt, dass sie sich befindet, wird vermutlich unerwartetes Verhalten auftreten. Das erste, worauf zu achten ist, ist die Zeit, die die Anwendung braucht, um auf die Roboter-Anwendungen zu reagieren.
Mit der Eigenschaft DelayMS können Sie einige Zeit warten, bis die Anwendung reagiert. Es gibt jedoch Situationen, in denen der Zustand einer Anwendung validiert werden muss, bevor mit bestimmten Schritten in einem Prozess fortgefahren wird. Zu diesen Maßnahmen können extra Aktivitäten gehören, die vor anderen Interaktionen auf den gewünschten Anwendungszustand warten. Aktivitäten, die helfen könnten:
Wenn eine Automatisierung dazu gedacht ist, den Desktop mit einem menschlichen Benutzer zu teilen, müssen alle UI-Interaktionen im Hintergrund implementiert werden. Das bedeutet, dass die Automatisierung mit den UI-Elementobjekten direkt arbeiten muss und das Anwendungsfenster während des Prozesses verborgen oder minimiert werden kann.
- Verwenden Sie SimulateType, SimulateClick und SendWindowMessagesoptions für die Navigation und Dateneingabe für die Aktivitäten Klicken und Eingeben in.
- Verwenden Sie die Aktivitäten Text einstellen, Prüfen und Element auswählen für die Eingabe von Daten im Hintergrund
- Die Aktivitäten Text erhalten, Volltext erhalten und WebScraping sind die Ausgaben, die im Hintegrund ausgeführt werden.
- Verwenden Sie die Aktivität Element vorhanden, um den Anwendungszustand zu verifizieren.