Ir para o conteúdo

Lab 4: Desenvolvimento de automações Desktop

Cadastro de novos produtos no sistema Fakturama

Nesse workshop você construirá uma automação que cadastra novos produtos no sistema Fakturama.

Consiste em preencher os campos necessários e ao final salvar o produto no sistema.

Download do Fakturama

O Fakturama é um software de código aberto com diversas funcionalidades comerciais que opera em múltiplos sistemas operacionais, uma dessas funcionalidades é o cadastro de produtos, o qual utilizaremos nesse workshop.

O download do aplicativo pode ser feito através desse link.

Tela de download do fakturama

BotCity Studio

Extensão no Visual Studio Code

A extensão BotCity Studio para o Visual Studio Code permite que você crie automações com visão computacional diretamente no seu editor de código. Ele é um assistente de código que ajuda a interagir com elementos gráficos de aplicativos diversos, como desktop e web, faz o reconhecimento de elementos e gera o código automaticamente.

Instalação e login

Na barra de extensões do Visual Studio Code, procure por BotCity Studio e instale a extensão.

Após instalado, clique no ícone do BotCity Studio na barra lateral do VS Code e na aba Account faça o login com as mesmas credenciais do Orquestrador BotCity Maestro.

Extensão BotCity Studio

Iniciar o BotCity Studio

Na aba Services clique em Start para iniciar o BotCity Studio.

BotCity Studio

O BotCity Studio fará a autenticação e abrirá o assistente de código para visão computacional.

BotCity Studio

Carregue o projeto no BotCity Studio

Caso esteja usando outro editor de código, você pode carregar o projeto no BotCity Studio seguindo a documentação.

Executar o aplicativo Fakturama

Com o BotCity Studio configurado, o próximo passo é abrir o aplicativo Fakturama utilizando o caminho do executável que está instalado na máquina.

Busque no código do arquivo bot.py pelo comentário # Implement here your logic... e adicione o seguinte trecho abaixo dele:

...
# Implement here your logic...
# Caminho onde está o executável Fakturama
path_fakturama = r"C:\Program Files\Fakturama2\Fakturama.exe"

# Abre o aplicativo do Fakturama
bot.execute(path_fakturama)

Nota

O caminho do executável pode variar conforme a instalação do aplicativo na máquina.

Ao executarmos a automação, o aplicativo Fakturama será aberto:

Acessando Fakturama

Nota

Lembre de retirar a linha de código bot.browse("http://www.botcity.dev") que está no template, pois não utilizaremos o navegador nesse projeto.

Definir o processo de automação

Com o aplicativo Fakturama aberto, defina o processo de cadastro de novos produtos:

  • Identificar e clicar no botão New product no menu lateral
  • Identificar e preencher os campos:
    • Item Number
    • Name
    • Category
    • GTIN
    • suplier code
    • Description
    • Price
    • Cost price
    • Allownace
    • Stock
  • Identificar e clicar no botão Save

Lista de produtos

Para facilitar o preenchimento dos campos, utilize uma lista de produtos fictícios. Nesse momento, inserira essa lista no código do arquivo bot.py, antes de carregar o aplicativo Fakturama:

# Lista de produtos
produtos = [
    {
        "Item Number": 1,
        "Name": "Laptop",
        "Category": "Eletrônico",
        "GTIN": "1234567890123",
        "Supplier Code": "SUP001",
        "Description": "Alto desempenho com as últimas especificações.",
        "Price": 999.99,
        "Cost Price": 799.99,
        "Allowance": 50,
        "Stock": 100
    },
    {
        "Item Number": 2,
        "Name": "Smartphone",
        "Category": "Eletrônico",
        "GTIN": "9876543210987",
        "Supplier Code": "SUP002",
        "Description": "Smartphone com recursos avançados de câmera e display.",
        "Price": 699.99,
        "Cost Price": 549.99,
        "Allowance": 30,
        "Stock": 150
    },
    {
        "Item Number": 3,
        "Name": "Tenis de corrida",
        "Category": "Esporte",
        "GTIN": "7654321098765",
        "Supplier Code": "SUP003",
        "Description": "Confortável e resistente, ideal para corridas.",
        "Price": 89.99,
        "Cost Price": 69.99,
        "Allowance": 20,
        "Stock": 200
    }
]

Para percorrer essa lista e preencher os campos no aplicativo Fakturama, vamos utilizar um laço de repetição for, dentro dele identificar e preencher os campos com os dados de cada produto.

Também crie uma variável sucesso antes da repetição e incremente em +1 a cada novo cadastro, para contar quantos produtos foram cadastrados com sucesso.

# Abre o aplicativo do Fakturama
bot.execute(path_fakturama)

# Variável para contar os produtos cadastrados com sucesso
sucesso = 0

# Repetição para cada produto
for produto in produtos:
    ...
    sucesso += 1

Identificar os elementos da tela

Nessa etapa, você identificará os elementos no aplicativo Fakturama e definirá as ações que serão realizadas.

Identificar o botão New product

Com a tela do aplicativo Fakturama aberta, faça uma captura de tela pressionando a tecla print screen no seu teclado. Isso fará com que a imagem da tela do Fakturama seja carregada no BotCity Studio.

Fakturama tela inicial

Nota

Certifique-se que o cursor está na linha correta no arquivo bot.py, onde o código será gerado automaticamente, antes de começar os recortes dos elementos.

Com a imagem carregada no BotCity Studio, faça um clique próximo ao botão New product para que a ferramenta aplique um zoom e faça o recorte o elemento:

Botão New product

O recorte é feito com o mouse, clicando e arrastando até selecionar dessa maneira:

Botão New product

Ao recortar o elemento, preencha os campos Name e Action da seguinte forma:

Botão New product

Ao clicar em Submit, o seguinte trecho de código será gerado pelo BotCity Studio, no arquivo bot.py:

...
# Repetição para cada produto
for produto in produtos:

    # Identifica e clica no botão "New product"
    if not bot.find( "new-product", matching=0.97, waiting_time=10000):
        not_found("new-product")
    bot.click()
Nesse momento, execute no terminal, o comando python bot.py para testar a ação de clicar no botão New product no aplicativo Fakturama.

O aplicativo deve abrir 3 novas abas, pois há 3 produtos na lista:

Fakturama novo produto

Preencher os campos

Você pode manter apenas uma das abas abertas e atualizar a captura de tela no BotCity Studio, pressionando a tecla print screen no seu teclado, para assim identificar os campos que precisam ser preenchidos.

Começando pelo campo Item Number, faça o recorte do elemento de texto como anteriormente, porém dessa vez selecione a ação Click Relative para esse elemento:

Campo Item Number

Ao clicar em Submit, o clique relativo nos permite clicar qualquer lugar da tela, tendo como referência o elemento recortado. Nesse caso, clique no campo ao lado de Item Number para que o cursor seja posicionado dentro dele:

Campo Item Number

O seguinte trecho de código será gerado pelo BotCity Studio:

...
# Preenche o campo "Item Number"
if not bot.find( "item-number", matching=0.97, waiting_time=10000):
    not_found("item-number")
bot.click_relative(137, 8)
Nesse momento, preencha a informação desse campo mapeado, utilizando o método type_keys() da seguinte forma:
bot.type_keys(str(produto["Item Number"]))

Nota

Atenção ao tipo de dado que é recebido, o método type_keys() espera uma string, utilize o método str() para converter o valor sempre que ele for diferente de string.

Dependendo do comportamento de cada aplicativo, você pode utilizar diferentes abordagens para o preenchimento dos campos. O Fakturama aceita o uso da tecla tab para avançar para o próximo campo, siga nessa abordagem.

...
# Avança e preenche o nome do produto
bot.tab()
bot.type_keys(produto["Name"])

# Avança e preenche a categoria
bot.tab()
bot.type_keys(produto["Category"])

# Avança e preenche o GTIN
bot.tab()
bot.type_keys(produto["GTIN"])

# Avança e preenche o Supplier Code
bot.tab()
bot.type_keys(produto["Supplier Code"])

# Avança e preenche a descrição
bot.tab()
bot.type_keys(produto["Description"])

Nota

Verifique sempre o comportamento do aplicativo para garantir que a abordagem utilizada está correta.

Note que ao chegar no campo Price, já existe um valor preenchido, para isso é necessário limpar o campo antes de preencher, para que o valor fique correto.

Para isso, utilize o método ctrl_a() para selecionar todo o texto, depois preencher com o método type_keys(). O mesmo será feito para o campo Cost Price e Stock.

...
# Avança, seleciona tudo e preenche o campo Price
bot.tab()
bot.control_a()
bot.type_keys(str(produto["Price"]))

# Avança, seleciona tudo e preenche o custo
bot.tab()
bot.control_a()
bot.type_keys(str(produto["Cost Price"]))

# Avança e preenche a margem
bot.tab()
bot.type_keys(str(produto["Allowance"]))

# Avança 2 vezes, seleciona tudo e preenche o estoque
bot.tab()
bot.tab()
bot.control_a()
bot.type_keys(str(produto["Stock"]))

Para realizar um teste, execute o código no terminal com o comando python bot.py e verifique se os campos estão sendo preenchidos corretamente.

Salvar o produto

Notem que após o preenchimento dos campos, o botão Save fica disponível para ser clicado. Nessa etapa utilize a visão computacional novamente.

Com o aplicativo Fakturama aberto e os campos preenchidos, faça uma captura de tela pressionando a tecla print screen no seu teclado para atualizar a imagem de referência no BotCity Studio.

Fakturama campos preenchidos

Nota

Certifique-se que o cursor está na linha correta no arquivo bot.py, onde o código será gerado automaticamente, antes de começar os recortes dos elementos.

Faça o processo de clicar próximo ao botão Save onde o zoom será aplicado, recorte o elemento e selecione a ação Click:

Fakturama botão salvar

Ao clicar em Submit, o código gerado será:

...
# Clica no botão "Save"
if not bot.find("botao_save", matching=0.97, waiting_time=10000):
    not_found("botao_save")
bot.click()

Fechar a aba do produto

Para finalizar o laço de repetição, feche a aba do produto com o método control_w() após salvar o mesmo.

...
# Fecha a aba do produto
bot.control_w()
Agora execute o código no terminal com o comando python bot.py e verifique se os produtos serão salvos corretamente.

Os produtos aparecerão salvos na aba de produtos do aplicativo Fakturama:

Fakturama produtos salvos

Finalizar o processo

Para finalizar o processo, faça uma integração com o Orquestrador BotCity Maestro. Com o orquestrador, você pode agendar a execução da automação, monitorar o status e os logs de execução, além de receber notificações diversas sobre a execução.

Logo após o laço de repetição, feche o aplicativo Fakturama com o método alt_f4() e descomente o seguinte trecho de código que já está no template do projeto:

...
# Fecha o aplicativo do Fakturama
bot.alt_f4()

# Descomente para marcar esta tarefa como finalizada no BotMaestro
maestro.finish_task(
    task_id=execution.task_id,
    status=AutomationTaskFinishStatus.SUCCESS,
    message="Tarefa de cadastro concluida.",
    total_items=len(produtos),
    processed_items=sucesso
)

Desta forma, ao executar através do Orquestrador BotCity Maestro, a tarefa será marcada como finalizada com sucesso.