studio
latest
false
- Introdução
- Configuração e Instalação
- Projetos de automação
- Sobre a publicação de projetos de automação
- Projetando automações
- Gerenciamento de pacotes de atividades
- Como definir as configurações do projeto de atividades
- Como assinar pacotes
- Governança
- Como importar entidades
- Experiência de Criação Moderna
- Vincular um projeto a uma ideia no Automation Hub
- Usando o Gerenciador de dados
- Dependências
- Tipos de fluxos de trabalho
- Fluxo de controle
- Comparação de arquivos
- Melhores Práticas de Automação
- Integração de controle de origem
- Sobre o controle de versões
- Como gerenciar projetos com o TÁS
- Como gerenciar projetos com o SN
- Dif. do fluxo de trabalho
- Depuração
- Geração de logs
- A ferramenta de diagnóstico
- Analisador de Fluxo de Trabalho
- Sobre o Analisador de Fluxo de Trabalho
- STN MG-001 - Convenção de nomenclatura de variáveis
- STN MG-002 - Convenção de nomenclatura de argumentos
- STN MG-004 - Duplicação de Nome de Exibição
- STN MG-005 - Variável substitui variável
- STN MG-006 - Variável substitui argumento
- STN MG-008 - Comprimento de variável excedido
- STN MG-009 - Variáveis Catablema de prefixo
- STN MG-011 - Argumentos Catablema de prefixo
- STN MG-012 - Valores padrão de argumentos
- STN MG-016 - Comprimento do argumento excedido
- ST-NMG-017 - O nome da classe corresponde ao namespace padrão
- SR-DB-002 - Contagem alta de argumentos
- SR-DB-003 - Esvaziar bloco catechu
- SR-DB-007 - Múltiplas camadas Com fluxograma
- ST-DPB-010 - Várias instâncias de [Fluxo de trabalho] ou [Caso de teste]
- SR-DB-020 - Propriedades de saída indefinidas
- SR-DB-021 - Tempo limite embutido em código
- SR-DB-023 - Fluxo de trabalho vazio
- SR-DB-024 - Verificação da atividade Persistente
- SR-DB-025 - Pré-requisito de serialidade de variáveis
- SR-DB-026 - Uso da atividade Dela
- SR-DB-027 - Melhores práticas de persistência
- SR-DB-028 - Pré-requisito de serialidade de argumentos
- SR-US-005 - Argumentos de atividades embutidos em código
- SR-US-009 - Variáveis não utilizadas
- SR-US-010 - Dependências não utilizadas
- SR-US-014 - Restrições de pacotes
- ST-USG-017 - Invalid parameter modifier
- SR-US-020 - Mensagens de logue mínimas
- SR-US-024 - Não utilizado e postergado
- SR-US-025 - Uso incorreto do valor salvo
- SR-US-026 - Restrições da atividade
- SR-US-027 - Pacotes necessários
- ST-USG-28 — restringir modelos de invocação de arquivos
- ST-USG-032 — rótulos obrigatórios
- ST-USG-034 — URL do Automation Hub
- Variáveis
- Argumentos
- Namespaces Importados
- Automações codificadas
- Introdução
- Registro de serviços personalizados
- Contextos Antes e Depois
- Gerando código
- Geração de caso de teste codificado a partir de casos de teste manuais
- Automação assistida baseada em gatilho
- Gravação
- Elementos de Interface Gráfica
- Seletores
- Repo. de Objetos
- Extração de Dados
- Automação de imagem e texto
- Automação de Tecnologias Citrix
- Automação RDP
- Automação do Varear Horizonte
- Automação da Salesforce
- Automação SAP
- Automaçāo da interface gráfica do macOS
- A ferramenta ScreenScrapeJavaSupport
- O protocolo Servodrive
- Extensões
- Sobre extensões
- Ferramenta SetupExtensions
- UiPathRemoteRuntime.exe não está sendo executado na sessão remota
- O UiPath Remote Runtime bloqueia a sessão do Citrix de ser fechado
- O UiPath Remote Runtime causa vazamento de memória
- O pacote UiPath.UIAutomation.Activities e as versões do UiPath Remote Runtime são incompatíveis
- A extensão do UiPath necessária não está instalada na máquina remota
- Configurações de resolução de tela
- Políticas de grupo
- Não é possível se comunicar com o navegador
- A extensão do Chrome é removida automaticamente
- A extensão pode ter sido corrompida
- Verifique se a extensão para o Chrome está instalada e habilitada
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Habilite o Acesso às URLs do arquivo e o Modo Anônimo
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- Lista de extensões para Chrome
- Extensão do Chrome no Mac
- Políticas de grupo
- Não é possível se comunicar com o navegador
- A extensão Edge é removida automaticamente
- A extensão pode ter sido corrompida
- Check if the Extension for Microsoft Edge is installed and enabled
- Check if ChromeNativeMessaging.exe is running
- Check if ComSpec variable is defined correctly
- Enable access to file URLs and InPrivate mode
- Multiple browser profiles
- Group Policy conflict
- Known issues specific to MV3 extensions
- Lista de extensões para Edge
- Extensão para Safari
- Extensão para o Varear Horizonte
- Extensão para Amazon WorkSpaces
- Plug-in do SAP Solution Manager
- Suplemento do Excel
- Test Suite — Studio
- Solução de problemas
- Sobre a solução de problemas
- Suporte e limitações do Microsoft Apo-V
- Solução de problemas do Internet Explorer x64
- Problemas do Microsoft Office
- Como identificar elementos de EU em PDF com opções de acessibilidade
- Reparando o suporte da Active Accessibility
- Validation of large Windows-legacy projects takes longer than expected
Contextos Antes e Depois
Guia do usuário do Studio
Última atualização 17 de dez de 2024
Contextos Antes e Depois
Nos casos de teste, as execuções Antes e Depois permitem executar determinadas ações antes e depois da execução do caso de teste. Esses contextos são comumente usados para configurar e desmontar recursos, realizar registro em log e gerenciar o ambiente de teste.
BeforeRunContext
(Configuração): a execução Antes é usada para realizar ações antes da execução principal do caso de teste. Geralmente é usado para configurar o estado inicial do ambiente de teste e preparar recursos. Alguns casos de uso comuns para o contexto Antes incluem:- Inicialização de variáveis ou dados necessários para o teste.
- Configuração de conexões com sistemas ou bancos de dados externos.
- Registro em log do início da execução de teste.
- Abertura de aplicativos ou páginas web com os quais o teste interage.
- Configure exceções específicas antes de executar o caso de teste.
AfterRunContext
(desmontagem): a execução Depois é usada para realizar ações após a conclusão da execução principal do caso de teste. Geralmente é usado para limpar recursos, finalizar operações e gravar os resultados do teste. Os casos de uso comuns para o contexto Depois incluem:- Fechamento de aplicativos ou páginas web usados durante o teste.
- Liberação de recursos, como conexões de banco de dados ou recursos de rede.
- Capture e imprima exceções registradas no contexto Antes e na execução principal.
Em automações codificadas, você tem a opção de criar uma interface personalizada para ações a serem executadas antes e depois de uma execução. Isso pode ser conseguido declarando a
IBeforeAfterRun
interface adjacente à classe principal e, em seguida, implementando sua própria lógica personalizada para essas ações.
Ao explorar as definições de
BeforeRunContext
, você pode encontrar o seguinte fragmento de código:// Context of the run before the execution.
public class BeforeRunContext
{
// The relative path of the workflow.
public string RelativeFilePath { get; set; }
}
// Context of the run before the execution.
public class BeforeRunContext
{
// The relative path of the workflow.
public string RelativeFilePath { get; set; }
}
Este contexto representa o estado antes da execução da automação. Ele contém informações sobre o caminho relativo do fluxo de trabalho que está sendo executado. Você pode configurar exceções aqui, de acordo com seu caso de uso.
Ao explorar as definições de
AfterRunContext
, você pode encontrar o seguinte fragmento de código:// Context of the run after the execution.
public class AfterRunContext
{
// The relative path of the workflow.
public string RelativeFilePath { get; set; }
// The exception caught in execution if any.
public Exception Exception { get; set; }
}
// Context of the run after the execution.
public class AfterRunContext
{
// The relative path of the workflow.
public string RelativeFilePath { get; set; }
// The exception caught in execution if any.
public Exception Exception { get; set; }
}
Este contexto representa o estado depois da execução da automação. Inclui detalhes sobre o caminho relativo do fluxo de trabalho executado e qualquer exceção capturada antes e durante a execução.
As execuções
Before
e main operam simultaneamente, capturando exceções que surgem durante a execução. Quaisquer exceções lançadas durante essas fases são capturadas e armazenadas no AfterRunContext
, deixando-o como nulo se nenhuma exceção ocorrer.
Após a execução
Before
e main, o After
método é executado. Se uma exceção for lançada durante a After
execução , a execução será encerrada e a exceção correspondente será lançada.
Se ocorrerem exceções nas execuções e
Before
After
, , elas serão agrupadas em um AggregateException
.
As execuções Antes e Depois permitem definir ações antes e depois dos casos de teste codificados, aprimorando as automações. Você pode criar essa implementação personalizada em um caso de teste codificado ou como uma classe parcial separada. Aprenda como integrar configuração, desmontagem e registro de log em seus casos de teste codificados neste tutorial.
Você pode implementar a interface Antes e Depois diretamente em seu caso de teste codificado.
- Dentro da classe pública onde reside seu caso de teste codificado, adicione
IBeforeAfterRun
interface . Isso será destacado em vermelho, indicando possíveis correções.public class MyTest : CodedWorkflow, IBeforeAfterRun
public class MyTest : CodedWorkflow, IBeforeAfterRun - Escolha Mostrar possíveis correções ou pressione
Ctrl + .
e selecione Implementar interface.Isso irá gerar uma interface padrão da seguinte forma:public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); }
public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); } - Modifique a implementação de acordo com suas necessidades.
No exemplo de código fornecido, o contexto registra uma mensagem antes da execução e verifica exceções posteriormente.
public void After(AfterRunContext context) { if (context.Exception != null) { Log(context.Exception.Message); } } public void Before(BeforeRunContext context) { Log("this is before"); }
public void After(AfterRunContext context) { if (context.Exception != null) { Log(context.Exception.Message); } } public void Before(BeforeRunContext context) { Log("this is before"); }
Você pode implementar a interface de execuções Antes e Depois apenas para certos arquivos
.cs
dentro de seu projeto, usando uma classe parcial personalizada.
- Crie um arquivo de código-fonte. É aqui que você implementa a interface de execuções Antes e Depois. Para este exemplo, nomeie o arquivo
TestCaseBase
.- Adicione a interface
IBeforeAfterRun
ao lado da classe pública. Isso será destacado em vermelho, indicando possíveis correções.Observação: a classe parcial personalizada (TestCaseBase
neste exemplo) deve herdar a classeCodedWorkflow
. Isso permite que outros arquivoscs
, que herdam a classe parcial personalizada, sejam executados dentro do esperado.public class TestCaseBase : CodedWorkflow, IBeforeAfterRun
public class TestCaseBase : CodedWorkflow, IBeforeAfterRun - Escolha Mostrar possíveis correções ou pressione
Ctrl + .
e selecione Implementar interface.Isso irá gerar uma interface padrão da seguinte forma:public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); }
public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); } - Modifique a implementação de acordo com suas necessidades.
No exemplo fornecido, o contexto registra uma mensagem antes da execução e verifica exceções posteriormente.
public void After(AfterRunContext context) { if (context.Exception != null) { throw context.Exception; } else { Log("Test " + context.RelativeFilePath + " finished with no exception."); } } public void Before(BeforeRunContext context) { Log("Execution started for " + context.RelativeFilePath); }
public void After(AfterRunContext context) { if (context.Exception != null) { throw context.Exception; } else { Log("Test " + context.RelativeFilePath + " finished with no exception."); } } public void Before(BeforeRunContext context) { Log("Execution started for " + context.RelativeFilePath); }
Agora você pode usar essa classe parcial personalizada para usar a mesma interface de execuções Antes e Depois apenas para os arquivos.cs
que a herdam. - Adicione a interface
- Criar uma automação codificada. Para este exemplo, crie um caso de teste codificado chamado
TestCase
. Para usar a mesma interface de execuções Antes e Depois da classe parcial personalizada, certifique-se de que o caso de teste codificado herde dessa classe parcial.public class TestCase : TestCaseBase { [TestCase] public void Execute() { Log("Executing the test..."); }
public class TestCase : TestCaseBase { [TestCase] public void Execute() { Log("Executing the test..."); }
Para demonstrar como essa implementação específica funciona, consulte seus logs de saída abaixo:
Execution started for file: TestCase.cs
[Info] IBeforeAfterRunExamples execution started
[Info] Execution started for TestCase.cs
[Info] Executing the test...
[Info] Test TestCase.cs finished with no exception.
[Info] IBeforeAfterRunExamples execution ended in: 00:00:00
Execution started for file: TestCase.cs
[Info] IBeforeAfterRunExamples execution started
[Info] Execution started for TestCase.cs
[Info] Executing the test...
[Info] Test TestCase.cs finished with no exception.
[Info] IBeforeAfterRunExamples execution ended in: 00:00:00
Você pode implementar a interface de contextos Antes e Depois usando a classe parcial
CodedWorkflow
, que qualquer outro caso de teste codificado ou fluxo de trabalho codificado dentro de seu projeto pode herdar. Essa implementação se aplica a todos os casos de teste codificados e fluxos de trabalho codificados dentro de seu projeto.
- Crie um arquivo de código-fonte e nomeie-o de forma diferente de , caso
CodedWorkflow.cs
contrário, a classe parcial terá um conflito com a classe somenteCodedWorkflow
leitura existente. - Construa uma classe parcial que implemente a interface personalizada para contextos Antes e Depois.
- Renomeie a classe para
CodedWorkflow
. Caso contrário, você não poderá utilizar os serviços disponíveis. - Certifique-se de que a classe em seu arquivo de origem codificado herde
CodedWorkflowBase
a classe . - Adicione o
UiPath.CodedWorkflows
namespace no início do seu arquivo de código-fonte.using System; using System.Collections.Generic; using UiPath.CodedWorkflows;
using System; using System.Collections.Generic; using UiPath.CodedWorkflows; - Dentro da classe do seu arquivo de código-fonte, inclua
IBeforeAfterRun
.namespace TestAutomationProject1 { public partial class CodedWorkflow : CodedWorkflowBase, IBeforeAfterRun
namespace TestAutomationProject1 { public partial class CodedWorkflow : CodedWorkflowBase, IBeforeAfterRun - Passe o mouse sobre
IBeforeAfterRun
e selecione Mostrar possíveis correções ou selecione-o e pressioneCtrl + .
. - Selecione Implementar interface.
Isso cria a implementação padrão abaixo:
public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); }
public void After(AfterRunContext context) { throw new NotImplementedException(); } public void Before(BeforeRunContext context) { throw new NotImplementedException(); } - Opcionalmente, você pode personalizar ainda mais a interface, de acordo com seu caso de uso. No exemplo de código abaixo, o contexto imprime uma mensagem antes da execução e, após a execução, verifica se alguma exceção foi gerada e a imprime novamente.
public void After(AfterRunContext context) { if (context.Exception != null) { Log(context.Exception.Message); } } public void Before(BeforeRunContext context) { Log("this is before"); }
public void After(AfterRunContext context) { if (context.Exception != null) { Log(context.Exception.Message); } } public void Before(BeforeRunContext context) { Log("this is before"); }