Os desafios do Hello World: criando meu primeiro bot com Python RPA utilizando BotCity
Morganna
Posted on June 20, 2023
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?
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
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>"
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:
É 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.
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:
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.")
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
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)
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)
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.
Posted on June 20, 2023
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.