studio
2023.10
false
UiPath logo, featuring letters U and I in white

Guía de usuario de Studio

Última actualización 17 de dic. de 2024

Utilizar proyectos de biblioteca importados en automatizaciones codificadas

Este tutorial muestra cómo utilizar objetos de los proyectos de biblioteca importados en automatizaciones codificadas. El ejemplo demuestra cómo utilizar elementos y flujos de trabajo del repositorio de objetos de un proyecto de biblioteca importado. El escenario dado implica automatizar el sitio web de Acme, para rellenar un boletín de calificaciones de un estudiante y añadirla a la base de datos.

Requisitos previos

  • Install UIAutomation Activities version 23.10.13 or higher.
    Note: We recommend you to use the latest minor version corresponding to the major version that you are working with. For example, if you are using the 23.10 major version of activity packages, we recommend you to upgrade them to the latest minor version available (23.10.x).
  • Publish the Acme library sample and install it in the project where you are working.

1. Crear el proyecto de biblioteca

Crea un proyecto de biblioteca donde guardar los elementos de IU esenciales para automatizar la aplicación Acme, específicamente para rellenar un boletín de calificaciones de un estudiante. Además, crea un flujo de trabajo de código bajo (.xaml) o codificado (.cs) en el proyecto de biblioteca, que utilizarás más tarde en otra automatización codificada.
  1. Crea un proyecto de biblioteca llamado AcmeLibrary.
  2. Captura todos los elementos de la IU que quieres utilizar en la sección Repositorio de objetos y Descriptores.
  3. Crea un nuevo flujo de trabajo codificado, desde el grupo Archivo.

    Este paso es crucial para habilitar el acceso al Repositorio de objetos en una automatización codificada al importar la biblioteca en otro proyecto.

  4. Cambia el nombre del flujo de trabajo de código bajo Principal a Send message box, y añade una actividad Cuadro de mensaje, con el siguiente texto: "Has añadido un nuevo boletín de notas para un estudiante en Acme".
    Nota: También puedes volver a crear la actividad Cuadro de mensaje como un flujo de trabajo codificado, siguiendo los pasos descritos en el tutorial.
  5. Guarda y publica el proyecto de biblioteca en una fuente.

    Instalarás y utilizarás esta biblioteca publicada en otro proyecto dentro de una automatización codificada.

2. Crear la automatización codificada

Después de crear el proyecto de biblioteca, instálalo en otro proyecto para aprovechar sus activos reutilizables, incluidos los elementos y flujos de trabajo del Repositorio de objetos, ya sean de código bajo (.xaml) o codificados (.cs).
Consejo: Al utilizar las API de UI Automation, recuerda que las sobrecargas con IScreenDescriptor o IElementDescriptor están destinadas a funcionar con elementos del Repositorio de objetos, mientras que las sobrecargas con TargetAnchorableModel están destinadas a su uso con selectores nativos obtenidos a través de UI Explorer. Consulta API de UI Automation para descubrir cómo aprovechar los selectores con las API de UI Automation.
  1. En el grupo Archivo, crea un nuevo flujo de trabajo codificado.
  2. Ve a Gestionar paquetes e instala el proyecto de biblioteca que creaste anteriormente.
  3. En el grupo Archivo, crea un nuevo flujo de trabajo.
    1. Asigna un nombre al flujo de trabajo notifyStudentScoreCardAdded.
    2. Ve al panel de actividades, a la sección Instalado.
    3. Busca el nombre del proyecto de biblioteca que importaste (para este ejemplo, AcmeLibrary).
    4. Arrastra y suelta la actividad Send message box en notifyStudentScoreCardAdded.
      Ahora notifyStudentScoreCardAdded tiene el mismo comportamiento que el flujo de trabajo Send message box del proyecto de biblioteca importado.
  4. Para mejorar la legibilidad, puedes definir tu aplicación importada del Repositorio de objetos como una variable que aplica una declaración using al principio de tu flujo de trabajo. Este es un ejemplo: using app = <ProjectName>.ObjectRepository.Descriptors.
    Con este método, puedes llamar fácilmente a los descriptores en el siguiente formato: app.<AppName>.<ScreenName>.<UiElementName>
    Para este ejemplo, definimos el Repositorio de objetos de Acme de la siguiente manera:
    namespace UsingImportedLibraryProjects
    {
        using AcmeApp = AcmeLibrary.ObjectRepository.Descriptors;namespace UsingImportedLibraryProjects
    {
        using AcmeApp = AcmeLibrary.ObjectRepository.Descriptors;
  5. Ahora puedes automatizar el escenario dado en Acme. Comienza abriendo la pantalla de inicio de sesión de Acme utilizando la API Abrir.
    [Workflow]
            public void Execute()
            {
              // 1.Open the Acme app on the Login screen
              var AcmeLoginScreen = uiAutomation.Open(AcmeApp.Acme.LoginScreen); [Workflow]
            public void Execute()
            {
              // 1.Open the Acme app on the Login screen
              var AcmeLoginScreen = uiAutomation.Open(AcmeApp.Acme.LoginScreen);
  6. Introduce las credenciales necesarias para iniciar sesión en Acme, utilizando la API EscribirEn.
    // 2.Type in the necessary credentials
             AcmeLoginScreen.TypeInto(AcmeApp.Acme.LoginScreen.Email, "john.doe2023@uipath.com");
             AcmeLoginScreen.TypeInto(AcmeApp.Acme.LoginScreen.Password, "12345678");  // 2.Type in the necessary credentials
             AcmeLoginScreen.TypeInto(AcmeApp.Acme.LoginScreen.Email, "john.doe2023@uipath.com");
             AcmeLoginScreen.TypeInto(AcmeApp.Acme.LoginScreen.Password, "12345678");
  7. Utiliza la API Clic, junto con un selector nativo, para hacer clic en el botón Iniciar sesión.
    // 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'/>"));
  8. El proceso de inicio de sesión muestra la pantalla Panel en la aplicación web de Acme. Por lo tanto, utiliza la API Adjuntar para centrarte en la nueva pantalla.
    // 4. Focus on the Dashboard screen
    var DashboardScreen = uiAutomation.Attach(AcmeApp.Acme.Dashboard);// 4. Focus on the Dashboard screen
    var DashboardScreen = uiAutomation.Attach(AcmeApp.Acme.Dashboard);
  9. Selecciona la entrada Estudiantes en el sitio web, utilizando la API Clic.
    // 5. Click the Students entry
    DashboardScreen.Click(AcmeApp.Acme.Dashboard.Students);// 5. Click the Students entry
    DashboardScreen.Click(AcmeApp.Acme.Dashboard.Students);
  10. Selecciona Boletín de calificaciones para abrir el formulario Estudiantes: boletín de calificaciones, utilizando la API Clic.
    // 6. Click Score card, to start filling in a student score card
    DashboardScreen.Click(AcmeApp.Acme.Dashboard.Students.ScoreCard);// 6. Click Score card, to start filling in a student score card
    DashboardScreen.Click(AcmeApp.Acme.Dashboard.Students.ScoreCard);
  11. Concéntrate en la pantalla Estudiantes: boletín de calificaciones, utilizando la API Adjuntar.
    // 7. Focus on the Score Card screen where you fill in the necessary information
    var ScoreCardScreen = uiAutomation.Attach(AcmeApp.Acme.StudentsScoreCard);// 7. Focus on the Score Card screen where you fill in the necessary information
    var ScoreCardScreen = uiAutomation.Attach(AcmeApp.Acme.StudentsScoreCard);
  12. Rellena la mitad de los campos del formulario Estudiantes: boletín de calificaciones utilizando la API EscribirEn y los elementos del Repositorio de objetos.
    ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.StudentEmail, "john.doe@uipath.com");
    ScoreCardScreen.TypeInto(AcmeApp.Acme.StudentsScoreCard.FirstName, "John");
    ScoreCardScreen.TypeInto(AcmeApp.Acme.StudentsScoreCard.LastName, "Doe");
    ScoreCardScreen.TypeInto(AcmeApp.Acme.StudentsScoreCard.ParentEmail, "johnny.doe@uipath.com");
    ScoreCardScreen.TypeInto(AcmeApp.Acme.StudentsScoreCard.Tuition, "Private");ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.StudentEmail, "john.doe@uipath.com");
    ScoreCardScreen.TypeInto(AcmeApp.Acme.StudentsScoreCard.FirstName, "John");
    ScoreCardScreen.TypeInto(AcmeApp.Acme.StudentsScoreCard.LastName, "Doe");
    ScoreCardScreen.TypeInto(AcmeApp.Acme.StudentsScoreCard.ParentEmail, "johnny.doe@uipath.com");
    ScoreCardScreen.TypeInto(AcmeApp.Acme.StudentsScoreCard.Tuition, "Private");
  13. Rellena el resto de los campos del formulario utilizando la API EscribirEn en combinación con los selectores nativos que descubras a través de 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");
  14. Selecciona Añadir detalles del boletín de calificaciones utilizando la API Clic.
    // 10. Click the "Add score card details" button using an Object Repository descriptor
    ScoreCardScreen.Click(AcmeApp.Acme.StudentsScoreCard.AddScoreCardDetailsButton);// 10. Click the "Add score card details" button using an Object Repository descriptor
    ScoreCardScreen.Click(AcmeApp.Acme.StudentsScoreCard.AddScoreCardDetailsButton);
  15. Invoca el flujo de trabajo que importaste del proyecto de biblioteca utilizando el método RunWorkflow(). Proporciona el método con la ruta del flujo de trabajo en el proyecto.
    // 11. Invoke imported workflow from library
    RunWorkflow("notifyStudentScoreCardAdded.xaml");// 11. Invoke imported workflow from library
    RunWorkflow("notifyStudentScoreCardAdded.xaml");
  16. Cierra las pestañas del navegador que abriste para automatizar el escenario, utilizando la 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();

Proyecto de ejemplo

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.

¿Te ha resultado útil esta página?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Uipath Logo White
Confianza y seguridad
© 2005-2024 UiPath. Todos los derechos reservados.