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

Guia do usuário do Studio

Última atualização 17 de dez de 2024

Usando projetos de biblioteca importados em automações codificadas

Esse tutorial mostra como usar objetos de projetos de biblioteca importados em automações codificadas. O exemplo demonstra como usar elementos e fluxos de trabalho do Repositório de objetos de um projeto de biblioteca importado. O cenário apresentado envolve a automação do site da Acme, para preencher um cartão de pontuação do aluno e adicioná-lo ao banco de dados.

Pré-requisitos

  • 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. Crie o projeto da biblioteca

Crie um projeto de biblioteca para armazenar os elementos de interface gráfica essenciais para automatizar o aplicativo Acme, especificamente para preencher um cartão de pontuação do aluno. Além disso, crie um fluxo de trabalho de pouco código (.xaml) ou codificado (.cs) dentro do projeto da biblioteca, que você usará posteriormente em outra automação codificada.
  1. Crie um projeto de biblioteca chamado AcmeLibrary.
  2. Capture todos os elementos de interface gráfica que você deseja usar dentro do Repositório de objetos e da seção Descritores.
  3. Crie um novo fluxo de trabalho codificado, no grupo Arquivo.

    Essa etapa é crucial para permitir o acesso ao Repositório de objetos dentro de uma automação codificada ao importar a biblioteca em outro projeto.

  4. Renomeie o fluxo de trabalho principal de pouco código para Send message box, e adicione uma atividade Message box, com o seguinte texto: "Você adicionou um novo cartão de pontuação para um aluno na Acme".
    Observação: você também pode recriar a atividade Message Box como um fluxo de trabalho codificado, seguindo as etapas descritas no tutorial.
  5. Salve e publique o projeto da biblioteca em um feed.

    Você instalará e usará essa biblioteca publicada em outro projeto dentro de uma automação codificada.

2. Crie a automação codificada

Após criar o projeto da biblioteca, instale-o em outro projeto para aproveitar seus objetivos reutilizáveis, incluindo elementos e fluxos de trabalho do Repositório de objetos, sejam eles de pouco código (.xaml) ou codificados (.cs).
Dica: ao usar APIs de automação de interface gráfica, lembre-se de que as sobrecargas com IScreenDescriptor ou IElementDescriptor se destinam a funcionar com elementos do Repositório de objetos, enquanto as sobrecargas com TargetAnchorableModel se destinam ao uso com seletores nativos obtidos por meio do UI Explorer. Visite APIs de automação de interface gráfica para saber como aproveitar seletores com APIs de automação de interface gráfica.
  1. No grupo Arquivo, crie um novo fluxo de trabalho codificado.
  2. Vá para Gerenciar pacotes e instale o projeto de biblioteca que você criou anteriormente.
  3. No grupo Arquivo, crie um novo fluxo de trabalho.
    1. Nomeie o fluxo de trabalho notifyStudentScoreCardAdded.
    2. Navegue até o painel Atividades, até a seção Instalado.
    3. Procure o nome do projeto de biblioteca que você importou (para esse exemplo, AcmeLibrary).
    4. Arraste e solte a atividade Send message box dentro de notifyStudentScoreCardAdded.
      Agora, notifyStudentScoreCardAdded tem o mesmo comportamento do fluxo de trabalho Send message box do projeto de biblioteca importado.
  4. Para melhorar a legibilidade, você pode definir seu aplicativo importado do Repositório de objetos como uma variável aplicando uma instrução using no início do seu fluxo de trabalho. Aqui está um exemplo: using app = <ProjectName>.ObjectRepository.Descriptors.
    Com essa abordagem, você pode chamar facilmente descritores no seguinte formato: app.<AppName>.<ScreenName>.<UiElementName>
    Para esse exemplo, definimos o Repositório de objetos Acme da seguinte forma:
    namespace UsingImportedLibraryProjects
    {
        using AcmeApp = AcmeLibrary.ObjectRepository.Descriptors;namespace UsingImportedLibraryProjects
    {
        using AcmeApp = AcmeLibrary.ObjectRepository.Descriptors;
  5. Agora você pode automatizar o cenário fornecido na Acme. Comece abrindo a tela de login da Acme usando a Open API.
    [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. Digite as credenciais necessárias para fazer login na Acme, usando a API TypeInto.
    // 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. Use a Click API, juntamente com um seletor nativo, para clicar no botão 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'/>"));
  8. O processo de login leva você à tela Painel no aplicativo web Acme. Portanto, use a API Attach para focar na nova tela.
    // 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. Selecione a entrada Alunos no site, usando a API Click.
    // 5. Click the Students entry
    DashboardScreen.Click(AcmeApp.Acme.Dashboard.Students);// 5. Click the Students entry
    DashboardScreen.Click(AcmeApp.Acme.Dashboard.Students);
  10. Selecione Cartão de pontuação para abrir o formulário Alunos - Cartão de pontuação, usando a API Click.
    // 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. Foque na tela Alunos - Cartão de pontuação, usando a API Attach.
    // 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. Preencha metade dos campos no formulário Alunos - Cartão de pontuação usando a API TypeInto e elementos do Repositório 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. Preencha o restante dos campos do formulário usando a API TypeInto em combinação com seletores nativos que você descobre por meio do 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. Selecione Adicionar detalhes do cartão de pontuação usando a API Click.
    // 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. Invoque o fluxo de trabalho que você importou do projeto de biblioteca usando o método RunWorkflow(). Forneça ao método o caminho do fluxo de trabalho dentro do projeto.
    // 11. Invoke imported workflow from library
    RunWorkflow("notifyStudentScoreCardAdded.xaml");// 11. Invoke imported workflow from library
    RunWorkflow("notifyStudentScoreCardAdded.xaml");
  16. Feche as guias do navegador que você abriu para automatizar o cenário, usando a 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();

Projeto de amostra

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.

Esta página foi útil?

Obtenha a ajuda que você precisa
Aprendendo RPA - Cursos de automação
Fórum da comunidade da Uipath
Uipath Logo White
Confiança e segurança
© 2005-2024 UiPath. Todos os direitos reservados.