Get Even More Visitors To Your Blog, Upgrade To A Business Listing >>

Construindo um bot com Python RPA para interagir com sistemas desktop

Posted on Sep 20 Você já deve conhecer ferramentas e frameworks que podem te ajudar a construir automações para interagir com sistemas Web. Mas e quando se trata de sistemas desktop, como você faz? Vim te mostrar como utilizar o framework Open Source da Botcity com diversas funcionalidades para você construir a sua automação com Python RPA.No terminal do seu computador, dentro da pasta em que você deseja criar o projeto, execute o seguinte comando para instalarmos o pacote cookiecutter (porque os templates oferecidos foram criados a partir dele).Para instalarmos o pacote do cookiecutter, vamos executar o seguinte comando:Para criarmos um projeto usando o modelo, vamos invocar o cookiecutter e fornecer como argumento a URL do repositório onde os templates da BotCity estão localizados:Durante a execução deste comando, você precisará informar duas coisas:Após o término do processo acima, uma nova pasta chamada bot-sicalc estará disponível. Você pode entender um pouco mais sobre a estrutura e como ele funciona com as orientações na documentação.Normalmente, projetos de desenvolvimento podem ter dependências como os frameworks utilizados, pacotes importantes, entre outros. O nosso também tem dependências e você poderá identificá-las no arquivo requirements.txt. Você notará que há pelo menos essas duas:Antes de rodar o seu projeto, é importante fazermos a instalação dessas dependências. E para isso, devemos executar o seguinte comando:Se você entrar no arquivo bot.py, perceberá que já temos um código pré-pronto e alguns comentários com orientações importantes sobre como fazer alguns dos próximos passos.Identifique as linhas com os comandos abaixo. Elas estão importando as bibliotecas que mencionamos do arquivo requirements.txt para que consiga utilizá-las no seu código.E nas linhas abaixo, estamos criando um objeto para o bot com o framework Desktop e pedindo para ele abrir um navegador no site da BotCity.Para ver o robô sendo executado, você pode fazer isso pela IDE que estiver utilizando ou na linha de comando com o seguinte:Deu certo? Abriu o navegador do seu computador com o site da BotCity? Aqui está um exemplo de qual seria o resultado esperado após essa execução:💡 Uma dica interessante é você testar se o que está acontecendo é o esperado. Tente fazer essa prática de testar aos poucos para você entender o que está acontecendo. Isso também facilitará no entendimento caso algum erro ocorra.Caso não tenha funcionado de primeira, não se preocupe. É normal você passar por alguns erros quando está desenvolvendo algo pela primeira vez ou aprendendo algo do zero. Te convido a acompanhar este post sobre alguns erros que podem acontecer e te encorajar a compartilhar os erros que você teve e como os resolveu.Caso esteja com alguma outra dificuldade no desenvolvimento, fique à vontade para entrar em nosso fórum ou em nossa comunidade no slack para pedir ajuda e tirar suas dúvidas.Para esse desenvolvimento, vamos utilizar o Botcity Studio, que através de visão computacional, nos ajudará com o mapeamento dos itens na tela do sistema utilizado para que nosso robô possa interagir com ele.Mantenha a sua IDE aberta com o seu projeto. Abra também o BotCity Studio e, no menu superior, escolha a opção "File" e, em seguida, "Load Project".Uma nova janela se abrirá e, nela, você deverá clicar em "browse" e identificar onde está a pasta do seu projeto. Em seguida, identifique o arquivo com extensão .botproj. Selecione este arquivo para o BotCity Studio carregar o seu projeto. No caso deste exemplo, o arquivo será “bot-sicalc.botproj”. Após isso, clique em "Open" e, em seguida, "Launch". Pronto, você já tem seu projeto carregado no BotCity Studio.Para os próximos passos, vamos manter as duas ferramentas abertas, a sua IDE e o BotCity Studio, para que os códigos sejam sincronizados em ambas as plataformas.Até este momento, mantivemos apenas o seguinte código no meu arquivo "bot.py". Perceba que deletamos a linha bot.browse("http://www.botcity.dev"), pois ela não será mais necessária.Ao salvar esse código na minha IDE, ao clicar novamente no BotCity Studio, você perceberá que também foi atualizado.Abaixo da linha bot = DesktopBot(), vamos adicionar o comando execute para o robô abrir o Sicalc, conforme código abaixo:Uma dica interessante é você testar se o que está acontecendo é o esperado. Neste momento, por exemplo, podemos salvar o código e executar o robô pela IDE para verificarmos se, de fato, o comando funcionará. Tente fazer essa prática de testar aos poucos para você entender o que está acontecendo. Isso também facilitará no entendimento caso algum erro ocorra.Se essa etapa funcionar, o robô executará e o Sicalc ficará nessa tela:💡 Antes de seguir em frente, lembre-se de deixar o cursor logo abaixo da linha de código que o bot abre o Sicalc no BotCity Studio. Isso é porque ele vai começar a gerar código para você utilizar em seu projeto. E o código será adicionado exatamente onde o cursor estiver posicionado.Ao executarmos o aplicativo Sicalc pela primeira vez, será exibido um pop-up contendo um aviso. A tarefa será identificarmos essa janela e fechá-la logo em seguida.A estratégia que vamos utilizar é procurar por uma âncora e realizar um clique relativo no botão Continuar.Voltando ao BotCity Studio, no arquivo bot.py posicionamos o cursor na linha onde o código deve ser gerado.Na aba UI, clicamos próximo ao elemento que queremos identificar e a ferramenta dará um zoom para selecionarmos o elemento. A seleção do nosso recorte é feita com o mouse, clicando e arrastando até selecionar dessa maneira:💡 Se o zoom não estiver adequado para você fazer a seleção necessária, basta pressionar a tecla esc no seu teclado e refazer o clique próximo ao elemento.Após selecionado, vamos preencher os campos Name com o valor "popup-esclarecimento" e Action com o valor "Click_relative". O campo "mode" deve ser mantido com a opção "Image" selecionada. Em seguida, clicamos no botão Submit.Após clicar em Submit, ao arrastar o mouse, você perceberá que uma linha vermelha acompanhará o movimento. Nós devemos dizer para o BotCity Studio onde deverá ser o clique relativo. Neste caso, será o botão "Continuar". Então arrastamos o cursor do mouse até esse botão e clicamos nele.Com essa etapa concluída, o seguinte trecho de código será gerado pelo BotCity Studio:Lembre-se de salvar o código no BotCity Studio, que pode ser pelo atalho "ctrl + s". Isso fará com que a sua IDE também seja atualizada com o novo código gerado.Ao rodarmos novamente esse código pela IDE, depois de abrir o aplicativo Sicalc, o bot realizará o clique relativo no elemento que foi selecionado acima. A partir disso, conseguimos continuar o processo de preenchimento da DARF.No aplicativo do Sicalc, precisaremos acessar a opção Funções do menu e, em seguida, a opção Preenchimento de DARF. Então devemos tirar um novo print da tela do Sicalc e, no BotCity Studio, podemos fazer o recorte desses elementos.Vamos começar pelo item "Funções". E para essa opção, vamos dar o nome funcoes e a action será click. A opção mode deve continuar como image.Com o sub-menu de opções de Funções aberto, vamos tirar um novo print para fazermos a seleção e ação Click na opção Preenchimento de DARF, chamando-a de preenchimento-darf.O código gerado pelo BotCity Studio será parecido com o código abaixo:Após a etapa anterior, será aberto um formulário inicial onde precisaremos preencher somente o código da receita.Novamente, vamos tirar um novo print da tela atualizada para fazermos a seleção do elemento correto no BotCity Studio.Nesse caso, vamos encontrar a âncora do input Cód. Receita e fazer um clique relativo dentro do campo, que fica logo na frente para ser preenchido:Após encontrar e clicar no campo referente a esse elemento, utilizamos o comando paste() para inserir nosso dado. Em seguida vamos utilizar o comando tab() para avançarmos para o próximo formulário.Você pode adicionar o código com o comando paste() e com o comando tab() diretamente no BotCity Studio e salvar para atualizar na sua IDE, ou adicionar diretamente pela IDE. Apenas lembre-se de salvar o código para ambas as ferramentas seguirem atualizadas.Abaixo, o exemplo de como poderá ficar esse trecho do código:Ao executarmos o código acima, será aberto um segundo formulário. E nele, devemos inserir os demais dados da DARF. Neste momento, a tela será parecida com essa:Atualizando o print da tela no BotCity Studio, vamos precisar encontrar os elementos referentes ao período de apuração (campo PA) e ao valor do documento (campo Valor em Reais) e fazer um clique relativo nos seus respectivos campos:E da mesma forma que fizemos anteriormente, vamos utilizar o comando paste() do framework para nos ajudar a digitar o valor dentro dos campos que estamos preenchendo neste momento. Perceba como o código ficará nessa etapa:O próximo passo é clicarmos no botão Calcular, para conseguirmos acessar o formulário final. Temos duas formas de resolver essa etapa. A primeira delas seria adicionar o comando enter(), pois essa ação no teclado de apertar a tecla enter, após o preenchimento dos campos, aciona o botão Calcular.Outra forma é seguir pela visão computacional e apoio do BotCity Studio. Então tiramos um novo print, selecionamos o botão Calcular e informamos que a ação deverá ser a de click.Após o processo de cálculo ser finalizado, precisamos acessar o formulário final. Para isso, vamos clicar no botão DARF:Com o formulário final aberto, vamos atualizar o print da tela no BotCity Studio para fazermos a seleção dos últimos elementos:Para essa etapa, vamos seguir utilizando a mesma estratégia das etapas anteriores, procurando pela âncora e fazendo um clique relativo no campo que precisamos preencher.Os dados que precisamos preencher nesse último formulário serão:Com todas as âncoras mapeadas, o código gerado será semelhante a esse:O último passo é salvarmos o arquivo da DARF que será gerado. Ainda na tela do último formulário exibido, após preencher os dados vamos clicar no botão Imprimir:Clicando no botão, será aberto a janela do gerenciador de arquivos do Windows, caso não tenha diretamente uma impressora configurada:Neste caso, vamos encontrar a referência dessa janela e clicar para que ela fique em foco:Após isso, podemos utilizar o paste() para informar qual será o caminho do arquivo e o enter() para salvar. Abaixo temos o exemplo de como poderá ficar o código:Após salvar o arquivo, nosso processo está finalizado!Podemos agora utilizar o comando wait() para aguardar 2 segundos e garantir que tudo foi salvo e depois o comando alt_f4() para fecharmos o formulário e a janela do Sicalc.💡 Essa estratégia do comando wait() pode ser útil em algumas ocasiões, quando algum processo ou comando pode levar um tempo para acontecer ou atualizar antes de ir para a próxima etapa do processo. Então analise se no seu projeto isso pode te ajudar e utilize da maneira que for melhor para você.Caso queira validar como o código final deste tutorial poderá ficar, segue abaixo o conteúdo do arquivo bot.py do projeto:Tem vários outros comandos que você pode explorar e utilizar para construir suas automações desktop. Acompanhe pelo link da documentação.Após construir a sua automação, que tal compartilhar com a comunidade o que aprendeu e o robô que você construiu? Basta compartilhar com o repositório de robôs da comunidade.Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well Confirm For further actions, you may consider blocking this person and/or reporting abuse Pavan Belagatti - Sep 6 Giuseppe Santoro - Sep 8 Sospeter Mongare - Aug 4 April Dunnam - Sep 6 Once suspended, botcitydev will not be able to comment or publish posts until their suspension is removed. Once unsuspended, botcitydev will be able to comment and publish posts again. Once unpublished, all posts by botcitydev will become hidden and only accessible to themselves. If botcitydev is not suspended, they can still re-publish their posts from their dashboard. Note: Once unpublished, this post will become invisible to the public and only accessible to Morganna. They can still re-publish the post if they are not suspended. Thanks for keeping DEV Community safe. Here is what you can do to flag botcitydev: botcitydev consistently posts content that violates DEV Community's code of conduct because it is harassing, offensive or spammy. Unflagging botcitydev will restore default visibility to their posts. DEV Community — A constructive and inclusive social network for software developers. With you every step of your journey. Built on Forem — the open source software that powers DEV and other inclusive communities.Made with love and Ruby on Rails. DEV Community © 2016 - 2023. We're a place where coders share, stay up-to-date and grow their careers.



This post first appeared on VedVyas Articles, please read the originial post: here

Share the post

Construindo um bot com Python RPA para interagir com sistemas desktop

×

Subscribe to Vedvyas Articles

Get updates delivered right to your inbox!

Thank you for your subscription

×