Os desafios do Hello World: criando meu primeiro bot com Python RPA utilizando BotCity

morgannadev

Morganna

Posted on June 20, 2023

Os desafios do Hello World: criando meu primeiro bot com Python RPA utilizando BotCity

en-us: link

Particularmente, eu acredito que deveríamos dar mais valor ao Hello World de qualquer tecnologia nova que estivermos aprendendo. É a partir dele que damos início a uma jornada de exploração e aprendizado. E até mesmo por ser um processo de aprendizado, podemos passar por alguns erros e está tudo bem, faz parte do processo também.

Quero deixar aqui algumas dicas sobre alguns erros que você pode enfrentar nos seus primeiros passos durante a construção de um bot com Python RPA. E caso você tenha passado por algum erro que não está aqui neste artigo, fique à vontade para contribuir nos comentários, principalmente comentando a solução que você aplicou para resolver o problema, combinado?

Gif de uma cena do desenho animado Pica Pau em que uma bruxa tenta subir numa vassoura falando

Antes de tudo... o Hello World

Hello World é uma brincadeira que fazemos na área de tecnologia, e talvez principalmente na parte de desenvolvimento, que seria a primeira coisa a se fazer ao aprender algo novo, para evitar o azar durante o uso dessa tal tecnologia. Por exemplo, se você estiver aprendendo Python, o "Hello World" seria mostrar essa mensagem mesmo na tela, utilizando comandos do Python. Você pode até dar uma olhada nesse meu outro artigo: Deixando seu 'Olá, mundo' com o Python.

Como fazer meu primeiro Hello World com Python RPA utilizando BotCity

Você pode dar seus primeiros passos nesse mundo com os frameworks Open Source da BotCity. Inclusive fique à vontade para explorar a documentação e começar a codar, além do fórum para tirar suas dúvidas com a comunidade.

Erros comuns

Erro 'ModuleNotFoundError' ao tentar executar meu projeto

Esse erro costuma acontecer também com a mensagem: No module named 'botcity'.

Isso significa que você acabou pulando a etapa de instalação do bot ou então você fez essa etapa, mas possivelmente em ambiente diferente da que está utilizando agora.

Para solucionar, execute o seguinte comando no terminal: pip install --upgrade -r requirements.txt. Isso é necessário porque nesse arquivo estão todas dependências externas para seu robô.

Essa etapa deve ser feita tanto para o BotCity Framework Desktop quanto para o BotCity Framework Web. Você pode ter mais detalhes na documentação.

Importante: se você utiliza ambientes virtuais para executar o seu projeto, como o venv, por exemplo, verifique que está utilizando a mesma versão do Python tanto para instalar as dependências que citamos, quanto para rodar o código. Isso também evitará alguns erros.

Erro No such file or directory: 'requirements.txt'

Esse erro pode acontecer caso você esteja tentando corrigir o anterior. É possível que você tenha executado o comando pip install --upgrade -r requirements.txt dentro da pasta errada do projeto. Verifique em seu terminal a pasta em que você está.

Erro 'OSError: [WinError 216]'

Neste erro, a mensagem completa pode ser:



OSError: [WinError 216] This version of %1 is not compatible with the version of Windows you're running. Check your computer's system information and then contact the software publisher


Enter fullscreen mode Exit fullscreen mode

E o cenário, normalmente é o seguinte: você está tentando realizar a parte de configuração de um webdriver em seu código para o seu bot web e, no caso, escolheu o browser Firefox.



# Setando navegador padrão para o Firefox
bot.browser = Browser.FIREFOX

# Setando o caminho do Geckodriver
bot.driver_path = "<caminho para o WebDriver>"


Enter fullscreen mode Exit fullscreen mode

Para fazer a configuração desse webdriver, costumamos fazer o download por este link, onde estão as releases do geckodriver. E então, identificamos o webdriver correto para o nosso sistema operacional, escolhendo um dos itens na parte de assets para download:

Print da área de assets do link mencionado acima mostrando as diferentes versões do driver para cada sistema.

É importante escolher com atenção, porque é comum haver confusão quando usamos, por exemplo, o sistema operacional Windows 64 bits e acabamos tentando configurar o geckodriver-vX.YY.Z-win-aarch64.zip. O correto seria o geckodriver-vX.YY.Z-win64.zip.

Ao fazer essa correção de utilizar o geckodriver com a versão correta, corrigimos o erro e você consegue abrir o navegador através do seu código, automaticamente.

Erro de incompatibilidade do driver com o navegador

É importante também confirmar a versão do navegador que você vai utilizar e validar que o webdriver é compatível com essa versão. Utilizando novamente o Firefox como exemplo, você pode entender observando a versão ao clicar no Menu > Ajuda > Sobre o Firefox.

Print da janela

Ao validar a versão do seu navegador ou do navegador que será utilizado na sua automação, verifique nas informações de release do webdriver selecionado se ele é compatível com essa versão que você vai utilizar.

No exemplo que utilizamos, observamos que a versão do Firefox que eu vou utilizar na automação é 114.0.2 e na release consta a informação que a versão mínima requerida é a 113.0:

Print do texto

Ou seja, nesse caso, eu conseguiria utilizar normalmente esse mesmo geckodriver na minha automação, visto que é compatível.

Erros quando os sistemas barram a utilização por identificar um robô

Em casos assim, pode ser possível tentar humanizar o processo. O que isso significa? Você pode tentar fazer movimentações com o mouse na tela, como uma pessoa poderia fazer. Ou ainda ajustar a digitação para que não seja um conteúdo diretamente colado no campo a ser preenchido.

Esse tipo de problema costuma acontecer mais em projetos de automações Web. Mas para "humanizar" a execução, você pode recorrer a alguns recursos do framework desktop da BotCity, essa pode ser uma boa alternativa. Abaixo, seguem os exemplos dos comandos que você pode utilizar:

Sobre a digitação, você pode usar o seguinte comando do framework BotCity (veja mais exemplos em nossa documentação):



bot.kb_type("Coloque seu texto aqui.")


Enter fullscreen mode Exit fullscreen mode

Sobre a movimentação do cursor do mouse, você pode usar os seguintes comandos do framework BotCity (veja mais exemplos em nossa documentação):



bot.mouse_move(x=100, y=200) # x e y são coordenadas


Enter fullscreen mode Exit fullscreen mode

Erros quando a execução do robô é muito mais rápida que os sistemas que está acessando

Como estamos criando automações para serem executadas com código, esse tempo de execução pode ser muito mais rápido que o esperado ou que os sistemas que estamos interagindo conseguem lidar.

E por causa disso, erros de execução podem acontecer, porque determinada etapa na tela ainda não finalizou para que o próximo passo aconteça dentro do processo.

Em ocasiões assim, talvez faça sentido avaliar a possibilidade de colocar pausas entre algumas dessas etapas.

Uma forma de fazer isso com o nosso framework da BotCity seria (veja outros exemplos na documentação):



# Aguardar por cinco segundos.
bot.wait(5000)


Enter fullscreen mode Exit fullscreen mode

Além disso, você também pode criar lógicas ou regras em seu código para garantir que o robô está na tela certa antes de executar determinado comando. Uma das formas de fazer isso, seria utilizar a visão computacional e buscar por alguma âncora na tela que deveria estar aberta e em uso.

Erro na precisão de encontrar elementos na tela

Esse problema pode acontecer por alguns motivos:

  • Você desenvolveu o robô em um ambiente diferente do que será executado em produção;
  • A resolução da tela alterou.

Para amenizar ou evitar que esse problema continue acontecendo:

  • Tente possibilitar que você faça o desenvolvimento da automação em ambiente e resolução o mais próximo possível de como será executado em produção;
  • Outra saída é fazer um ajuste em relação a acurácia do algoritmo de visão computacional no código gerado.

Veja no exemplo do código a seguir gerado pela visão computacional:



    if not bot.find("window", matching=0.97, waiting_time=10000):
        not_found("window")
    bot.click_relative(221, 206)


Enter fullscreen mode Exit fullscreen mode

O parâmetro matching costuma estar com o valor máximo 0.97. Esse valor poderia ser ajustado a, no mínimo, 0.90. Isso pode ajudar nas questões levantadas neste tópico. Mas cuidado para não diminuir muito mais que isso, a ponto do algoritmo perder a sua eficiência para encontrar o elemento que precisa ser identificado.

Erro unable to find valid certification path to requested target ao tentar executar o BotCity Studio

Este erro pode acontecer em seu ambiente caso existam bloqueios configurados de certificados. Uma das saídas é fazer o seguinte passo-a-passo:

  • Abra a pasta do SDK. No wizard isso pode ser feito clicando em "Open SDK folder";
  • Acesse a pasta conf e abra o arquivo conf.bcf em modo de edição (você pode fazer isso, abrindo com o bloco de notas, por exemplo);
  • Adicione a linha ignoreSSL=true e não esqueça de salvar essa alteração no arquivo conf.bcf;
  • Reinicie o BotCity Studio e o problema deve estar resolvido.

Sobre os erros quando começamos

É importante entender que alguns erros podem, de fato, acontecer. E isso não é um impedimento para o seu aprendizado, pelo contrário. Entender o erro, ler a mensagem com calma, pesquisar, tirar dúvidas com a comunidade e resolver esse problema é o que vai te trazer ainda mais conhecimento.

Então relaxe, aproveite essa viagem e desbrave o universo RPA com muito Python e Open Source.


Que tal você fazer o seu Hello World e nos contar quais foram os desafios que isso lhe trouxe? Vamos compartilhar nossas experiências e conhecimento com a comunidade.

E se quiser uma inspiração sobre o que construir para continuar seus aprendizados, dá uma olhada em nosso repositório de bots, onde a galera da comunidade compartilha seus projetos Open Source para troca de conhecimento e experiências.

💖 💪 🙅 🚩
morgannadev
Morganna

Posted on June 20, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related