RPA não encontra elementos na tela?

Soluções alternativas para quando não é possível obter um identificador único para elementos na tela em programas desktop

Ao automatizar processos em um ambiente web, dependendo da estrutura do site, estão disponíveis diversos locators, que são caminhos para determinado elemento na página, como caixas de texto e botões. Por exemplo, esses identificadores podem ser o id, name, cssSelector ou até o caminho (xpath) para o elemento.

Para aplicações desktop no Windows, uma das formas de encontrar os localizadores é usando o programa Accessibility Insights. Nele são mostrados valores como nome, tipo de item, id, entre outros, que podem ser usados para detectar e interagir com as partes do programa. Porém, nesse ambiente os localizadores podem não estar disponíveis para fazer a automatização do processo. Então, o que fazer nesse cenário? Serão citados aqui alguns exemplos de soluções alternativas para quando não há acesso aos identificadores dos componentes em programas desktop.

Copiar e colar

O clipboard – ou a área de transferência – é muito útil quando é possível copiar o conteúdo da janela de um programa. Em algumas aplicações para desktop se pode copiar o texto que aparece em caixas de diálogo, por exemplo.

Assim, para verificar se uma sequência de passos produziu um resultado correto, basta copiar esse resultado, armazená-lo e o comparar com o que é esperado, e a partir daí executar as ações que dependem dessa informação.

Dessa forma, apenas se o conteúdo em si mudar é que a automação do processo deixará de funcionar, e alterações na disposição dos elementos não farão diferença.

Porém, nem sempre dá para copiar o que está visível na tela, mas existem outras opções para capturar o conteúdo apresentado, como demonstrado a seguir.

Use OCR

OCR é um acrônimo para Optical Character Recognition (em português, Reconhecimento Ótico de Caracteres). É uma tecnologia que possui a capacidade de extrair textos de imagens.

Imagine que existe uma janela com uma lista de itens, e o seu robô precisa clicar em um item específico dessa lista de acordo com o conteúdo dele. Porém, não é possível passar o nome ou o id, por exemplo,  deste item da lista para o robô, porque não há identificador para ele.

Existem tecnologias para desenvolver RPA que possibilitam “ler” o conteúdo que está visível na tela. Como a Sikuli Library, uma biblioteca para o Robot Framework, que faz reconhecimento de imagens e textos. Usando essa biblioteca, é possível clicar diretamente no texto que se deseja, no caso, existe uma palavra-chave específica para isso, a “Click Text”, que vai buscar em toda a tela este texto, e clicar no local onde ele aparece.

Porém, existem alguns problemas com essa abordagem, como: o que acontece se o texto se repete? E se o estilo da fonte dificultar a leitura do mesmo? E dependendo da quantidade de conteúdo escrito e tamanho da fonte, pode haver um delay maior para que o texto seja encontrado.

Assim, para mitigar esses problemas, uma solução é limitar a área onde o texto será buscado. Isso pode ser feito definindo as coordenadas da região que o texto é esperado. Na biblioteca citada, também é possível ler o texto somente da área especificada. Isso pode ser útil para verificar se o resultado obtido de alguma ação é o mesmo do esperado.

Capture a tela e interaja com ela

A biblioteca que foi mencionada anteriormente, a Sikuli Library, tem a capacidade de reconhecer os componentes que estão visíveis na tela, ou seja, não somente textos, mas também imagens.

Para isso, é preciso guardar as imagens que representam os elementos no diretório em que a biblioteca irá buscá-los. Então, durante a execução do RPA, estas imagens serão comparadas com o que está sendo mostrado na tela no momento. Dessa forma, é possível armazenar o screenshot de um botão, e passar o nome desse arquivo como argumento para a keyword – ou palavra-chave – que o utilizará ao interagir com o botão, por exemplo.

Relembrando o exemplo do tópico anterior, onde o robô deveria clicar em um item de lista de acordo com o texto que está nele, o que aconteceria se houvesse muitos elementos nesta lista e fosse necessário descer a barra de rolagem para encontrar determinado elemento? Uma das possibilidades é utilizar essa tecnologia de reconhecimento de imagens para clicar e arrastar essa barra de rolagem, por exemplo. A medida que o conteúdo da tela muda, uma nova verificação é feita, a fim de se encontrar o item procurado.

Outro exemplo de uso pode ser verificar se a aplicação a ser automatizada já está aberta, assim o reconhecimento de imagens pode ajudar a examinar se o ícone está visível na barra de tarefas do sistema operacional, indicando assim, que não é necessário executar o programa novamente.

Como se pode ver, as aplicações dessa forma de interação com a tela são numerosas, apenas porém, cabe o cuidado com as mudanças que a interface gráfica pode apresentar. Identificar os elementos por imagens pode tornar a automatização sensível, visto que qualquer mudança na aparência desses componentes, pode impossibilitar o reconhecimento dos mesmos e “quebrar” o robô.

Pegue um atalho

Quando o objeto disponibiliza um atalho para acessá-lo, isso pode diminuir a complexidade do seu RPA. Como no caso de um dos passos do robô ser clicar em um item de um menu, em vez de usar o reconhecimento de imagens, por exemplo, onde seria necessário armazenar um screenshot do item, compará-lo como o menu na tela e então clicar no componente encontrado, seria mais interessante usar o atalho fornecido pelo próprio sistema a ser automatizado.

Essa abordagem pode tornar a execução do RPA mais rápida, visto que há menos passos para produzir o resultado que também poderia ser alcançado das outras formas exploradas no texto.

Qual abordagem escolher?

Como se pode ver, há diversas formas de lidar com a ausência de identificadores para os itens em janelas de programas. Assim, o que é necessário fazer é analisar as limitações do processo que está sendo automatizado, para então escolher uma forma de interagir com a tela. Geralmente, a solução envolve usar mais de uma das abordagens mostradas.

Para saber mais sobre automação de processos robóticos, você pode ler o artigo anterior: RPA é lindo e funciona! Mas e quando dá erro?

Samantha Gomes
Sou estudante de Tecnologia em Análise e Desenvolvimento de Sistemas no IFG e Desenvolvedora RPA na Deltapoint. Meus interesses são automação e desenvolvimento de software, além de compartilhar conhecimento!

O que é SRE?

Site Reliability Engineering (SRE) é o resultado da combinação de responsabilidades de operações de TI com desenvolvimento de software. Com o SRE, há uma expectativa inerente de responsabilidade para atender aos objetivos de nível de serviço (SLOs) definidos para o serviço que eles gerenciam e os acordos de nível de serviço (SLAs) que prometemos em nossos contratos.

Construindo sistemas distribuídos confiáveis

O que significa observabilidade, como definir objetivos de nível de serviço (SLOs), como a observabilidade ajuda a tornar os sistemas mais confiáveis ​​e como validar sua prática de observabilidade.

Imagem de um notebook aberto com duas pessoas se comunicando.

Como a observabilidade ajuda na confiabilidade

O que significa observabilidade, como definir objetivos de nível de serviço (SLOs), como a observabilidade ajuda a tornar os sistemas mais confiáveis ​​e como validar sua prática de observabilidade.

Preparamos sua empresa ou startup para decolar

Construímos o Sizify – A única plataforma que integra software e serviços que garante planejamento , produtividade , controle, qualidade e segurança.

    SOFTWARE DEV

    Nossos squads multidisciplinares também entregam tudo pronto ! Desde desde a concepção, design, arquitetura até a execução dentro do prazo e budget.

    QA/X

    O Sizify® por observabilidade e monitoramento ativos, reduz o GAP entre:

    a) experiência do usuário durante o uso;

    b) gestão de confiabilidade de software e ambientes;

    c) exigências de qualidade do produto.

    MEASURMENT

    A analise de ponto de função do Sizify®  garante mais que uma simples medida. É um modelo de governança com apoio de indicadores, frameworks e estimativas de custos e prazos. Identifica  áreas de risco do projeto evitando  rupturas de escopo, prazo e budget.