- Visão geral
- Eventos do Aplicativo
- Construtor de fluxograma
- Notas de versão
- Sobre as atividades do Flowchart Builder
- Compatibilidade do projeto
- Texto Explicativo
- Complex Scenarios
- Credenciais
- Data Service
- Sobre o pacote de atividades Data Service
- Compatibilidade do projeto
- Criar Gravação de Entidade
- Atualizar Registro de Entidade
- Excluir Registro de Entidade
- Obter Registro de Entidade Por Id
- Consultar Registros de Entidade
- Consultar Vários Registros de Entidade
- Carregar Arquivo no Campo de Registro
- Baixar arquivo do Campo de Registro
- Excluir Arquivo do Campo de Registro
- Criar Vários Registros de Entidade
- Atualizar Vários Registros de Entidade
- Excluir Vários Registros de Entidade
- Criar Gravação de Entidade
- Excluir Registro de Entidade
- Obter Registro de Entidade Por Id
- Consultar Registros de Entidade
- Atualizar Registro de Entidade
- Carregar Arquivo no Campo de Registro
- Baixar arquivo do Campo de Registro
- Excluir Arquivo do Campo de Registro
- Criar Vários Registros de Entidade
- Atualizar Vários Registros de Entidade
- Excluir Vários Registros de Entidade
- Formulário
- Notas de versão
- Compatibilidade do projeto
- Formulários em tempo real
- Atualização de dados do formulário
- Execução de formulários usando JavaScript
- Personalização de formulários usando CSS
- Componentes condicionais
- Adição de vários componentes na mesma linha em Colunas
- Como usar o componente Data Table
- Get File/Folder Path
- Leitura de valores de célula de um componente de Grade de Dados
- Exibição de arquivos PDF
- Exibição de imagens em formulários
- Rolagem através de grades de dados
- Uso de ferramentas de desenvolvimento com formulários
- Calcular valores do componente do formulário
- Como gerenciar datas em formulários
- Como abrir hiperlinks dentro de formulários
- Exibição de uma guia padrão em formulários
- Exibição do rótulo completo de um componente
- Como pesquisar strings longas em listas suspensas
- Definir valores de formulário dinamicamente
- Sobre a experiência pré-23.4 do Form
- Compatibilidade do Projeto
- Formulários em tempo real
- Caixas de seleção dinâmicas
- Menus suspensos condicionais
- Exibindo uma guia padrão
- Exibição de imagens
- Exibição de arquivos PDF
- Exibição do rótulo completo
- Elementos HTML dinâmicos
- Gerenciamento de datas
- Como pesquisar strings longas em menus suspensos
- Personalização de formulários usando arquivos CSS locais
- Execução do bloco Fazer durante alteração de caixa de seleção
- Personalização da largura de colunas
- Atualização de dados do formulário
- Redefinição de dados da coleção
- Lógica Avançada
- Execução do bloco Fazer durante alteração de opção em menu suspenso
- Leitura de valores de célula de um componente de Grade de Dados
- Componentes condicionais
- Rolagem através de componentes de Grade de Dados
- Como usar o componente de Grade
- Ferramentas de Desenvolvedor
- Valor Calculado
- Menus suspensos dinâmicos
- Como alternar abas com um clique de botão
- Como abrir hiperlinks dentro de formulários
- FTP
- IPC
- Pipelines do Automation Ops
- Notas de versão
- Sobre o pacote de atividades Pipelines
- Compatibilidade do projeto
- Ativar implantação da solução
- Analisar
- Criar
- Clonar
- Delete Solution Package
- Deploy Solution
- Download Package
- Download Solution Package
- Baixar configuração do pacote da solução
- Publicar pacote
- Publicar pacote da solução
- Re-sync Solution Project
- Run Existing Test Set
- Faça testes
- Estágio
- Desinstalar solução
- Processo de atualização
- Carregar pacote da solução
- Persistence
- Notas de versão
- Compatibilidade do projeto
- Bulk Form Designer
- Start Job And Get Reference
- Wait for Job and Resume
- Add Queue Item And Get Reference
- Wait For Queue Item And Resume
- Wait for Form Task and Resume
- Resume After Delay
- Assign Tasks
- Create External Task
- Wait For External Task and Resume
- Complete Task
- Forward Task
- Get Form Tasks
- Get Task Data
- Obter tarefas do aplicativo
- Add Task Comment
- Update Task Labels
- Criar tarefa do aplicativo
- Wait For App Task and Resume
- Configure task timer
- Trabalhando com tarefas de aplicativo
- Criando sua primeira ação de formulário
- Controles avançados para menus suspensos
- Incorporando objetos em ações de formulário
- Permitindo que usuários baixem arquivos para o bucket de armazenamento
- Adicionando lógica avançada usando Java Script
- Configurando uma guia padrão
- Removendo o botão Excluir de Editar grade usando CSS personalizado
- Personalização de modelos de Editar grade
- Uso de botões para disparar uma lógica personalizada
- Usando um layout de formulário externo
- Expansão dinâmica de componentes do formulário no runtime
- Alinhar o conteúdo de um componente de formulário da esquerda para a direita usando atributos JSON
- Amostras de Fluxos de Trabalho
- System
- Notas de versão
- Compatibilidade do projeto
- Codificação de caracteres suportada
- Assistente do Construtor RegEx
- Adicionar Coluna de Dados
- Add Data Row
- Add Log Fields
- Add or Subtract from Date
- Add Transaction Item
- Add Queue Item
- Append Item to Collection
- Append Item to List
- Anexar Linha
- Beep
- Break / Exit Loop
- Browse for file
- Pesquisar pasta
- Build Collection
- Criar Tabela de Dados
- Bulk Add Queue Items
- Alterar formatação para texto
- Change Type
- Check False
- Check True
- Clear Data Table
- Collection to DataTable
- Comentar
- Compress/Zip Files
- Copy File
- Copy Folder
- Combinar texto
- Comentar / Atividades desabilitadas
- Continue / Skip Current
- Create File
- Create Folder
- Create List
- Entrada Personalizada
- Excluir
- Delete File
- Delete Folder
- Delete Storage File
- Delete Queue Items
- Desabilitar Gatilho Local
- Do While
- Baixar arquivo da URL
- Download Storage File
- Habilitar Gatilho Local
- Evaluate Business Rule
- Exists In Collection
- Extract/Unzip Files
- Extrair data e hora de um texto
- Extrair Texto
- File Change Trigger
- File Exists
- Filter Collection
- Filtrar Tabela de Dados
- Folder Exists
- For Each
- For Each File In Folder
- File Change Trigger v3
- Localizar e substituir
- Encontrar Padrões Correspondentes
- For Each Folder in Folder
- For Each Row in Data Table
- Formatar data como texto
- Format Value
- Generate Data Table From Text
- Get Asset
- Get Credential / Get Orchestrator Credential
- Get Current Job Info
- Get Environment Folder
- Get Environment Variable
- Get File Info
- Get Folder Info
- Get Jobs
- Get Processes
- Get Row Item
- Obter segredo
- Obter item de transação
- Get Username/Password
- Get Queue Items
- Gatilho de variável global alterada
- Input Dialog
- Invoke Code
- Invoke Com Method
- Invoke Power Shell
- Invocar Processo
- Invoke VBScript
- Invocar Arquivo de Fluxo de Trabalho
- É Correspondência de Texto
- Join Data Tables
- Kill Process
- Launch Workflow Interactive
- List Storage Files
- Mensagem do Log
- Lookup Data Table
- Manual Trigger
- Merge Collections
- Merge Data Table
- Caixa de Mensagem
- Modify Date
- Modify Text
- Move File
- Move Folder
- Multiple Assign
- Novo item adicionado à fila
- Notify Global Variable Changed
- Orchestrator HTTP Request
- Output Data Table
- Paralelo
- Parallel For Each
- Path Exists
- Postpone Transaction Item
- Process End Trigger
- Process Start Trigger
- Escopo do rastreamento do processo
- Raise Alert
- Read List Item
- Ler Arquivo de Texto
- Read Storage Text
- Remove Data Column
- Remove Data Row
- Remove Duplicate Rows
- Remove From Collection
- Remove Log Fields
- Replace Matching Patterns
- Repeat Number Of Times
- Repetir gatilho
- Rename File
- Rename Folder
- Report Status
- Reset Timer
- Resume Timer
- Tentar Escopo Novamente
- Retornar
- Executar Gatilhos Locais
- Run Agent
- Executar Trabalho
- Run Parallel Process
- Set Asset
- Enviar notificação por e-mail
- Set Credential
- Set Environment Variable
- Set Secret
- Set Task Status
- Set Trace Status
- Set Transaction Progress
- Set Transaction Status
- Should Stop
- Dividir texto
- Sort Data Table
- Start Timer
- Iniciar Trabalho
- Parar Tarefa
- Parar Gatilhos Locais
- Stop Timer
- Text to Left/Right
- Colocar todo o texto em Maiúscula/Minúscula
- Gatilho de Tempo
- Trigger Scope
- Acompanhar objeto
- Timeout Scope
- Update Row Item
- Update List Item
- Upload Storage File
- Wait for Download
- Wait Queue Item
- While
- Workflow Placeholder
- Write Storage Text
- Gravar Arquivo de Texto
- Add Data Row
- AddQueueItem
- Add Transaction Item
- Anexar Linha
- BulkAddQueueItems
- Clear Data Table
- Compactar Arquivos ZIP
- Copy File
- Create File
- Create Folder
- Delete File or Folder
- Delete Queue Items
- Delete Storage File
- Download Storage File
- ExtractUnzip Files
- Filtrar Tabela de Dados
- Get Asset
- Get Credential
- GetJobs
- Get Queue Item
- GetQueueItems
- Obter recurso para caminho local
- Get Row Item
- Obter item de transação
- Invocar Processo
- Join Data Tables
- List Storage Files
- Lookup Data Table
- Merge Data Table
- Move File
- Orchestrator HTTP Request
- OutputDataTable
- Path Exists
- Postpone Transaction Item
- Read Storage Text
- Ler Arquivo de Texto
- Remove Data Column
- Remove Duplicate Rows
- Substituir
- Set Asset
- Set Credential
- SetTransactionProgress
- Set Transaction Status
- Sort Data Table
- Iniciar Trabalho
- Parar Tarefa
- Update Row Item
- Upload Storage File
- Wait Queue Item
- Write Storage Text
- Gravar Arquivo de Texto
- Teste
- Notas de versão
- Sobre o pacote de atividades Testing
- Compatibilidade do projeto
- O nome do caso de teste não é exclusivo no projeto
- Convenção de nomenclatura do caso de teste quebrada
- Verificações ausentes dentro do caso de teste
- Fluxos de trabalho não testados
- Test Manager conectado
- Simulação não usada
- Caso de teste sem anotações
- Caso de teste/fluxo de trabalho muito complexo
- O caso de teste possui muitas ramificações
- Configurações do projeto
- Add Test Data Queue Item
- Attach Document
- Bulk Add Test Data Queue Items
- Criar Regra de Comparação
- Comparar documentos em PDF
- Comparar Texto
- Delete Test Data Queue Items
- Generate Address
- Generate Given Name
- Generate Last Name
- Generate Random Date
- Generate Random Number
- Generate Random String
- Generate Random Value
- Get Test Data Queue Item
- Get Test Data Queue Items
- Verify Control Attribute
- Verify Expression
- Verify Expression with Operator
- Verify Range
- Address
- AddTestDataQueueItem
- AttachDocument
- BulkAddTestDataQueueItems
- DeleteTestDataQueueItems
- GetTestDataQueueItem
- GetTestDataQueueItems
- GivenName
- LastName
- RandomDate
- RandomNumber
- RandomString
- RandomValue
- VerifyAreEqual
- VerifyAreNotEqual
- VerifyContains
- VerifyExpression
- VerifyExpressionWithOperator
- VerifyIsGreater
- VerifyIsGreaterOrEqual
- VerifyIsLess
- VerifyIsLessOrEqual
- VerifyIsRegexMatch
- VerifyRange
- Workflow Foundation

Atividades do fluxo de trabalho
Comparar documentos em PDF
Verifica se dois documentos são equivalentes, usando várias opções de comparação, incluindo os seguintes tipos de comparação:
- Comparando palavras.
- Comparando linhas.
- Comparando caracteres como variáveis
char.Observação:O tipo de documento compatível é
PDF.
Definição
Namespace: UiPath.Testing.API
Assembly: UiPath.Testing.Activities.Api (em UiPath.Testing.Activities.Api.dll)
ComparePdfDocuments(string, string, ComparisonType, CompareDocumentsOptions)
ComparisonResult ComparePdfDocuments(
string baselinePath,
string targetPath,
[ComparisonType comparisonType],
[CompareDocumentsOptions opts])
ComparisonResult ComparePdfDocuments(
string baselinePath,
string targetPath,
[ComparisonType comparisonType],
[CompareDocumentsOptions opts])
baselinePath String : o caminho do documento base que é usado como referência para comparação.
targetPath String : o caminho do documento que é comparado com o documento base.
comparisonType ComparisonType (Opcional) : o tipo de comparação a ser usado ao comparar documentos. As seguintes opções estão disponíveis:
ComparisonType.Char: Compara todos os caracteres (char) nos documentos.ComparisonType.Line: Compara cada linha nos documentos.ComparisonType.Word: Compara cada palavra nos documentos.
opts CompararOpçõesDeDocumento : as opções de comparação específicas que devem ser usadas para essa operação. Para criar um objeto do tipo CompareDocumentsOptions, use aClasse TestingOptions.CompareDocuments.
RetornarValor
ComparisonResult
O resultado da ação de comparação, armazenado dentro de uma variável ComparisonResult.
Exemplos
1. Comparação de PDFs por caracteres:
Neste exemplo, estamos comparando dois arquivos PDF, uma conta de luz e uma conta de àgua. A comparação é feita no nível do caractere. As variáveis firstBill e secondBill representam os caminhos desses arquivos PDF. As regras do curinga e do regex fornecidas juntamente com os métodos WithIgnoreWildcardRule e WithIgnoreRegexRule são usadas para ignorar padrões específicos na comparação. Por exemplo, a regra curinga 2022 e a regra regex \d{1,2}/\d{1,2}/\d{4} ignoram datas, supondo que elas estejam no formato MM/DD/AAAA na comparação, já que elas podem diferir em duas faturas separadas e não são relevantes para a estrutura das contas.
Depois que a comparação é feita, o método WithGenerateHtml cria um relatório HTML da comparação e quaisquer diferenças encontradas são registradas nos logs usando o método Log.
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";
var identicalCharCompareResult = testing.VerifyDocumentsEquivalence(
firstBill, secondBill,
ComparisonType.Character,
TestingOptions.CompareDocuments()
.WithGenerateHtml(@".\HtmlCompareResults\PDFCharCompare.html")
.WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
.WithIgnoreRegexRule("RegexRule", @"\d{1,2}/\d{1,2}/\d{4}", true)
);
Log("pdf compare by char " + identicalCharCompareResult.AreEquivalent.ToString(),LogLevel.Error);
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";
var identicalCharCompareResult = testing.VerifyDocumentsEquivalence(
firstBill, secondBill,
ComparisonType.Character,
TestingOptions.CompareDocuments()
.WithGenerateHtml(@".\HtmlCompareResults\PDFCharCompare.html")
.WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
.WithIgnoreRegexRule("RegexRule", @"\d{1,2}/\d{1,2}/\d{4}", true)
);
Log("pdf compare by char " + identicalCharCompareResult.AreEquivalent.ToString(),LogLevel.Error);
2. Comparação de PDFs por palavra:
Neste exemplo, estamos comparando os mesmos arquivos PDF do exemplo anterior: uma conta de luz e uma conta de água. A comparação é feita no nível da palavra. As variáveis firstBill e secondBill representam os caminhos desses arquivos PDF. As regras do curinga e do regex fornecidas juntamente com os métodos WithIgnoreWildcardRule e WithIgnoreRegexRule são usadas para ignorar padrões específicos na comparação. Por exemplo, a regra curinga 2022 ignora datas, supondo que elas estejam no formato MM/DD/AAAA na comparação, pois elas podem diferir em duas faturas separadas e não são relevantes para a estrutura das contas. A regra regex [$]\d+\.\d{2} ignora os valores de moedas, supondo que eles estejam em um formato semelhante a $XX.XX.
Depois que a comparação é feita, o método WithGenerateHtml cria um relatório HTML da comparação e quaisquer diferenças encontradas são registradas nos logs usando o método Log.
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";
var differentWordCompareResult = testing.VerifyDocumentsEquivalence(
firstBill, secondBill,
ComparisonType.Word,
TestingOptions.CompareDocuments()
.WithGenerateHtml(@".\HtmlCompareResults\PDFWordCompareDiff.html")
.WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
.WithIgnoreRegexRule("RegexRule", @"[$]\d+\.\d{2}", true)
);
Log("pdf compare by Word " + differentWordCompareResult.AreEquivalent.ToString(), LogLevel.Error);
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";
var differentWordCompareResult = testing.VerifyDocumentsEquivalence(
firstBill, secondBill,
ComparisonType.Word,
TestingOptions.CompareDocuments()
.WithGenerateHtml(@".\HtmlCompareResults\PDFWordCompareDiff.html")
.WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
.WithIgnoreRegexRule("RegexRule", @"[$]\d+\.\d{2}", true)
);
Log("pdf compare by Word " + differentWordCompareResult.AreEquivalent.ToString(), LogLevel.Error);
3. Comparação de PDFs por linha:
Nesse exemplo, semelhante ao anterior, estamos comparando dois arquivos PDF, uma conta de luz e uma conta de água. Nesse cenário, a comparação é feita no nível da linha. As variáveis firstBill e secondBill representam os caminhos desses arquivos PDF. A regra curinga e a regra regex fornecidas junto com os métodos WithIgnoreWildcardRule e WithIgnoreRegexRule são usadas para ignorar padrões específicos na comparação.
Por exemplo, a regra de curinga 2022 ignora datas (presumindo que elas estejam no formato MM/DD/AAAA) na comparação, pois podem diferir em duas contas separadas e não são relevantes para a estrutura das contas.A regra regex [$]\d+\.\d{2} ignora os valores de moedas, presumindo que eles estejam em um formato semelhante a $XX.XX.
Depois que a comparação é feita, o método WithGenerateHtml cria um relatório HTML da comparação e quaisquer diferenças encontradas são registradas nos logs usando o método Log.
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";
var largeLineCompareResult = testing.VerifyDocumentsEquivalence(
firstBill, secondBill,
ComparisonType.Line,
TestingOptions.CompareDocuments()
.WithGeneratePdf(@".\PDFCompareResults",@".\PDFCompareResults")
.WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
.WithIgnoreRegexRule("RegexRule", @"[$]\d+\.\d{2}", true)
);
Log("Pdf compare by line " + largeLineCompareResult.AreEquivalent.ToString(), LogLevel.Error);
var firstBill = @"C:\bills\2024.10\pdfs for compare\electricity_bill.pdf";
var secondBill = @"C:\bills\2024.10\pdfs for compare\water_bill.pdf";
var largeLineCompareResult = testing.VerifyDocumentsEquivalence(
firstBill, secondBill,
ComparisonType.Line,
TestingOptions.CompareDocuments()
.WithGeneratePdf(@".\PDFCompareResults",@".\PDFCompareResults")
.WithIgnoreWildcardRule("WildcardRule", "*2022*", true)
.WithIgnoreRegexRule("RegexRule", @"[$]\d+\.\d{2}", true)
);
Log("Pdf compare by line " + largeLineCompareResult.AreEquivalent.ToString(), LogLevel.Error);
Em todos os exemplos, a propriedade AreEquivalent retorna se os documentos são iguais ou não.