DEV Community

Cover image for Os desafios do Hello World: criando meu primeiro bot com Python RPA utilizando BotCity
Morganna for BotCity

Posted on • Updated on

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 "e lá vamos nós" em looping

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 "sobre o Firefox" mostrando algumas informações sobre o navegador, uma delas a versão.

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 "Note that the minimum required Firefox version is 113.0."

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.

Top comments (2)

Collapse
 
bug_elseif profile image
Bruna Ferreira

Ótimo artigo Morgs!
Gostaria de compartilhar que tive um problema com No module named 'botcity' mesmo instalando o requirements, o que aconteceu comigo é que tinha mais de uma versão do Python instalada na máquina, possivelmente estava gerando algum conflito.
Deixando apenas uma versão funcionou normalmente.

Collapse
 
morgannadev profile image
Morganna

Obrigada por compartilhar, Bu! Boa dica. E valeu demais pelo feedback também!