- Notes de publication
- Démarrage
- Paramétrage et configuration
- Projets d'automatisation
- À propos de la publication de projets d'automatisation
- Conception d'automatisations
- Gérer les package d’activités
- Configuration des paramètres du projet d'activité
- Signature de paquets
- Gouvernance
- Import des entités
- Modern Design Experience
- Lier un projet à une idée dans Automation Hub
- Utilisation du gestionnaire de données
- Dépendances
- Types de workflows
- Flux de contrôle
- Comparaison de fichiers
- Meilleures pratiques d'automatisation
- Intégration du contrôle de code source
- À propos du contrôle de version
- Gestion de projets à l'aide de TFS
- Gestion de projets à l'aide de SVN
- Diff de workflow
- Débogage
- Journalisation
- L'outil de diagnostic (Diagnostic Tool)
- Analyseur de workflow
- À propos de l'analyseur de workflow
- ST-NMG-001 - Convention d'affectation de noms des variables
- ST-NMG-002 - Convention d'affectation de noms des arguments
- ST-NMG-004 - Duplication du nom complet
- ST-NMG-005 - La variable remplace une autre
- ST-NMG-006 - La variable remplace l'argument
- ST-NMG-008 - Longueur de variable dépassée
- ST-NMG-009 - Ajouter un préfixe aux variables DataTable
- ST-NMG-011 - Ajouter un préfixe aux arguments Datatable
- ST-NMG-012 - Valeurs par défaut de l'argument
- ST-NMG-016 : longueur d'argument dépassée
- ST-NMG-017 : le nom de la classe correspond à l’espace de noms par défaut
- ST-DBP-002 - Nombre élevé d'arguments
- ST-DBP-003 - Bloc d'interception vide
- ST-DBP-007 - Plusieurs couches de l'organigramme
- ST-DPB-010 : plusieurs instances de [workflow] ou [cas de test]
- ST-DBP-020 - Propriétés de sortie non définies
- ST-DBP-021 - Délai d'expiration codé en dur
- ST-DBP-023 : Workflow vide
- ST-DBP-024 - Vérification de l’activité de persistance
- ST-DBP-025 - Condition préalable à la sérialisation des variables
- ST-DBP-026 - Utilisation de l’activité Délai
- ST-DBP-027 - Pratiques exemplaires de persistance
- ST-DBP-028 - Condition préalable à la sérialisation des arguments
- ST-MRD-002 - Valeurs par défaut des noms d'activités
- ST-MRD-004 - Activités inaccessibles
- ST-MRD-005 - Séquences redondantes
- ST-MRD-007 - Clauses If imbriquées
- ST-MRD-008 - Séquence vide
- ST-MRD-009 - Activités profondément imbriquées
- ST-MRD-011 - Utilisation de la ligne d'écriture
- ST-MRD-017 - Incomplet si (Incomplete If)
- ST-USG-005 - Arguments d'activité codée en dur
- ST-USG-009 - Variables inutilisées
- ST-USG-010 - Dépendances inutilisées
- ST-USG-014 - Restrictions sur les paquets (Package Restriction)
- ST-USG-020 - Nombre minimum de messages consignés
- ST-USG-024 - Non utilisé, sauvegardé pour plus tard (Unused Saved for Later)
- ST-USG-025 - Utilisation abusive de la valeur enregistrée (Saved Value Misuse)
- ST-USG-026 - Restrictions d'activité (Activity Restrictions)
- ST-USG-027 - Packages requis
- ST-USG-028 - Restreindre l'invocation des modèles de fichier
- ST-USG-027 - Balises requises
- ST-USG-034 – URL Automation Hub
- Variables
- Arguments
- Noms d'espace importés
- Automatisations codées
- Introduction
- Enregistrement de services personnalisés
- Contextes Avant (Before) et Après (After)
- Génération du code
- Génération de cas de test codé à partir de cas de test manuels
- Intégration d'OpenAI avec des workflows codés
- Demander un prêt auprès de UiBank
- Génération de files d'attente avec workflows codés et API Orchestrator
- Utilisation de projets de bibliothèque importés dans des automatisations codées
- Automatisation Attended basée sur déclencheur
- Enregistrement
- Éléments de l'interface utilisateur
- À propos des éléments d'interface utilisateur
- Propriétés des activités de l'interface utilisateur
- Exemple d'utilisation des méthodes de saisie
- Méthodes de sortie ou de capture de données d'écran
- Exemple d'utilisation de méthodes de sortie ou de capture de données d'écran
- Génération de tables à partir de données non structurées
- Capture relative de données
- Sélecteurs
- Réf. d’objets
- Capture de données
- Automatisation des images et des textes
- À propos de l'automatisation des images et des textes
- Activités liées à la souris et au clavier
- Exemple d'utilisation de l'automatisation de la souris et du clavier
- Les activités de type texte
- Exemple d'utilisation d'automatisation de texte
- Activités de type OCR
- Activités de type image
- Exemple d'utilisation de l'automatisation d'image et d'OCR
- Citrix Technologies Automation
- Automatisation de RDP
- Automatisation VMware Horizon
- Automatisation de Salesforce
- Automatisation SAP
- macOS UI Automation
- Outil ScreenScrapeJavaSupport
- Protocole Webdriver
- Extensions
- À propos des extensions
- Outil SetupExtensions
- UiPathRemoteRuntime.exe n'est pas en cours d'exécution dans la session distante
- UiPath Remote Runtime bloque la fermeture de la session Citrix
- UiPath Remote Runtime provoque une fuite de mémoire
- UiPath.UIAutomation.Activities package and UiPath Remote Runtime versions mismatch
- L'extension UiPath requise n'est pas installée sur la machine distante
- Paramètres de résolution d’écran
- Group Policies
- Impossible de communiquer avec le navigateur
- L’extension Chrome est automatiquement supprimée
- L'extension a peut-être été corrompue
- Vérification de l'installation et de l'activation de l'extension pour Chrome
- Vérifiez si ChromeNativeMessaging.exe est en cours d’exécution
- Vérifier si la variable ComSpec est correctement définie
- Activez l’accès aux URL de fichiers et au mode navigation privée
- Profils de navigateur multiples
- Group Policy conflict
- Problèmes connus spécifiques aux extensions MV3
- Liste des extensions pour Chrome
- Extension Chrome sur Mac
- Group Policies
- Impossible de communiquer avec le navigateur
- L’extension Edge est automatiquement supprimée
- L'extension a peut-être été corrompue
- Vérification si l'extension pour Microsoft Edge est installée et activée
- Vérifiez si ChromeNativeMessaging.exe est en cours d’exécution
- Vérifier si la variable ComSpec est correctement définie
- Activation de l'accès aux URL de fichiers et au mode navigation privée
- Profils de navigateur multiples
- Group Policy conflict
- Problèmes connus spécifiques aux extensions MV3
- Liste des extensions pour Edge
- Extension pour Safari
- Extension pour VMware Horizon
- Extension pour Amazon WorkSpaces
- Plug-in du gestionnaire de solution SAP
- Complément Excel
- Suite de tests - Studio
- Résolution des problèmes
- À propos de la résolution des problèmes
- Prise en charge et limitations de Microsoft App-V
- Résolution des problèmes rencontrés avec Internet Explorer x64
- Problèmes rencontrés avec Microsoft Office
- Identification des éléments d'IU dans PDF avec options d'accessibilité
- Réparation de la prise en charge d'Active Accessibility
- La validation des projets volumineux hérités depuis Windows prend plus de temps que prévu
Utilisation de projets de bibliothèque importés dans des automatisations codées
Ce tutoriel vous montre comment utiliser les objets de projets de bibliothèque importés dans des automatisations codées. L’exemple montre comment utiliser les éléments et les workflows du référentiel d’objets à partir d’un projet de bibliothèque importé. Le scénario donné consiste à automatiser le site Web de l’Acme, pour remplir une carte de score étudiante et l’ajouter à la base de données.
.xaml
) ou codé (.cs
) dans le projet de bibliothèque, que vous utiliserez plus tard dans une autre automatisation codée.
- Créez un projet de bibliothèque nommé
AcmeLibrary
. - Capturez tous les éléments d’IU que vous souhaitez utiliser dans les sections Référentiel d’objets (Object Repository) et Descripteurs (Descriptors).
- Créez un nouveau Workflow codé à partir du groupe Fichier (File).
Cette étape est cruciale pour activer l’accès au référentiel d’objets dans une automatisation codée lors de l’importation de la bibliothèque dans un autre projet.
- Renommez le Workflow low-code principal en
Send message box
et ajoutez une activité Zone de message (Message box) avec le texte suivant : « Vous avez ajouté une nouvelle carte de score pour un étudiant d’Acme. »Remarque : vous pouvez également recréer l’activité Zone de message (Message Box) en tant que workflow codé, en suivant les étapes décrites dans le tutoriel. - Enregistrez et publiez le projet de bibliothèque dans un flux.
Vous installerez et utiliserez cette bibliothèque publiée dans un autre projet au sein d’une automatisation codée.
.xaml
) ou codés (.cs
).
IScreenDescriptor
ou IElementDescriptor
sont destinées à fonctionner avec les éléments du Référentiel d'objets, tandis que les surcharges avec TargetAnchorableModel
sont destinées à être utilisées avec des sélecteurs natifs obtenus via UI Explorer. Consultez la section API d'UIAutomation pour apprendre à exploiter les sélecteurs avec les API d'UIAutomation.
- À partir du groupe Fichier (File), créez un nouveau Workflow codé (Coded Workflow).
- Accédez à Gérer les packages (Manage Packages) et installez le projet de bibliothèque que vous avez précédemment créé.
- À partir du groupe Fichier (File), créez un nouveau Workflow.
- Nommez le workflow
notifyStudentScoreCardAdded
. - Accédez au panneau Activités (Activities), puis à la section Installé (Installed).
- Recherchez le nom du projet de bibliothèque que vous avez importé (pour cet exemple,
AcmeLibrary
). - Glissez-déposez l’activité
Send message box
à l’intérieur denotifyStudentScoreCardAdded
.Désormais, lenotifyStudentScoreCardAdded
a le même comportement que le workflowSend message box
du projet de bibliothèque importé.
- Nommez le workflow
- Pour améliorer la lisibilité, vous pouvez définir votre application de référentiel d’objets importée en tant que variable appliquant une instruction
using
au début de votre workflow. Voici un exemple :using app = <ProjectName>.ObjectRepository.Descriptors.<AppName>
.Avec cette approche, vous pouvez facilement appeler des descripteurs au format suivant :app.<ScreenName>.<UiElementName>
Pour cet exemple, nous définissons le Référentiel d’objets Acme comme suit :namespace UsingImportedLibraryProjects { using AcmeApp = AcmeLibrary.ObjectRepository.Descriptors.Acme;
namespace UsingImportedLibraryProjects { using AcmeApp = AcmeLibrary.ObjectRepository.Descriptors.Acme; - Vous pouvez maintenant automatiser le scénario donné dans Acme. Commencez par ouvrir l’écran de connexion Acme à l’aide de l’option l’API Ouvrir (Open).
[Workflow] public void Execute() { // 1.Open the Acme app on the Login screen var AcmeLoginScreen = uiAutomation.Open(AcmeApp.LoginScreen);
[Workflow] public void Execute() { // 1.Open the Acme app on the Login screen var AcmeLoginScreen = uiAutomation.Open(AcmeApp.LoginScreen); - Saisissez les informations d’identification nécessaires pour vous connecter à Acme, à l’aide de l’API SaisirDans (TypeInto).
// 2.Type in the necessary credentials AcmeLoginScreen.TypeInto(AcmeApp.LoginScreen.Email, "john.doe2023@uipath.com"); AcmeLoginScreen.TypeInto(AcmeApp.LoginScreen.Password, "12345678");
// 2.Type in the necessary credentials AcmeLoginScreen.TypeInto(AcmeApp.LoginScreen.Email, "john.doe2023@uipath.com"); AcmeLoginScreen.TypeInto(AcmeApp.LoginScreen.Password, "12345678"); - Utilisez l’API Cliquer (Click) avec un sélecteur natif pour cliquer sur le bouton Connexion (Login).
// 3.Use a native selector to click the Login button AcmeLoginScreen.Click(Target.FromSelector("<webctrl tag='BUTTON' type='submit'/>"));
// 3.Use a native selector to click the Login button AcmeLoginScreen.Click(Target.FromSelector("<webctrl tag='BUTTON' type='submit'/>")); - Le processus de connexion vous permet d’accéder à l’écran Tableau de bord (Dashboard) dans l’application Web Acme. Par conséquent, utilisez l’API Joindre (Attach) pour vous concentrer sur le nouvel écran.
// 4. Focus on the Dashboard screen var DashboardScreen = uiAutomation.Attach(AcmeApp.Dashboard);
// 4. Focus on the Dashboard screen var DashboardScreen = uiAutomation.Attach(AcmeApp.Dashboard); - Sélectionnez l’entrée Étudiants (Students) sur le site Web à l’aide de l’API Cliquer (Click).
// 5. Click the Students entry DashboardScreen.Click(AcmeApp.Dashboard.Students);
// 5. Click the Students entry DashboardScreen.Click(AcmeApp.Dashboard.Students); - Sélectionnez Carte de score (Score card) pour ouvrir le formulaire Étudiants - Carte de score (Studio - Score Card), à l’aide de l’API Cliquer (Click).
// 6. Click Score card, to start filling in a student score card DashboardScreen.Click(AcmeApp.Dashboard.Students.ScoreCard);
// 6. Click Score card, to start filling in a student score card DashboardScreen.Click(AcmeApp.Dashboard.Students.ScoreCard); - Concentrez-vous sur l’écran Étudiants - Carte de score (Studio - Score Card), en utilisant l’API Joindre (Attach).
// 7. Focus on the Score Card screen where you fill in the necessary information var ScoreCardScreen = uiAutomation.Attach(AcmeApp.StudentsScoreCard);
// 7. Focus on the Score Card screen where you fill in the necessary information var ScoreCardScreen = uiAutomation.Attach(AcmeApp.StudentsScoreCard); - Remplissez la moitié des champs du formulaire Étudiants - Carte de score (Studio - Score Card) à l’aide de l’API SaisirDans (TypeInto) et les éléments du Référentiel d’objets (Object Repository).
ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.StudentEmail, "john.doe@uipath.com"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.FirstName, "John"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.LastName, "Doe"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.ParentEmail, "johnny.doe@uipath.com"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.Tuition, "Private");
ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.StudentEmail, "john.doe@uipath.com"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.FirstName, "John"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.LastName, "Doe"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.ParentEmail, "johnny.doe@uipath.com"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.Tuition, "Private"); - Remplissez le reste des champs du formulaire à l’aide de l’API SaisirDans (TypeInto) en combinaison avec des sélecteurs natifs que vous découvrez via UI Explorer.
ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='mathematics' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='physics' tag='INPUT' />"), "B"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='biology' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='chemistry' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='geography' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='history' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='english' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='computer Science' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='professorComments' tag='INPUT' />"), "The student is doing okay, very hardworking and does its best");
ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='mathematics' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='physics' tag='INPUT' />"), "B"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='biology' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='chemistry' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='geography' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='history' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='english' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='computer Science' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='professorComments' tag='INPUT' />"), "The student is doing okay, very hardworking and does its best"); - Sélectionnez Ajouter des détails de carte de score à l’aide de l’API Cliquer (Click).
// 10. Click the "Add score card details" button using an Object Repository descriptor ScoreCardScreen.Click(AcmeApp.StudentsScoreCard.AddScoreCardDetailsButton);
// 10. Click the "Add score card details" button using an Object Repository descriptor ScoreCardScreen.Click(AcmeApp.StudentsScoreCard.AddScoreCardDetailsButton); - Appelez le workflow que vous avez importé à partir du projet de bibliothèque à l’aide de la méthode
RunWorkflow()
. Fournissez à la méthode le chemin d’accès du workflow à l’intérieur du projet.// 11. Invoke imported workflow from library RunWorkflow("notifyStudentScoreCardAdded.xaml");
// 11. Invoke imported workflow from library RunWorkflow("notifyStudentScoreCardAdded.xaml"); - Fermez les onglets du navigateur que vous avez ouverts pour automatiser le scénario, à l’aide de l’API
Dispose()
.// 12. Close the applications/browsers you opened, to finish he automation ScoreCardScreen.Dispose();
// 12. Close the applications/browsers you opened, to finish he automation ScoreCardScreen.Dispose();
To follow the steps and try out the tutorial yourself, see the following sample project: Using imported library projects in coded automations. The file contains the library project, as well.