Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
1
Danilo Yoshio Marques dos Santos
DESENVOLVIMENTO DE ROBÔ (SCRIPTS) DE AUTOMATIZAÇÃO DE PROCESSOS PRODUTIVOS EM
PLATAFORMAS WEB
Assis 2011
Av. Getúlio Vargas, 1200 – Vila Nova Santana – Assis – SP – 19807-634 Fone/Fax: (0XX18) 3302 1055 homepage: www.fema.edu.br
2
Danilo Yoshio Marques dos Santos
DESENVOLVIMENTO DE ROBÔ (SCRIPTS) DE AUTOMATIZAÇÃO DE PROCESSOS PRODUTIVOS EM
PLATAFORMAS WEB
Trabalho de Conclusão de Curso apresentado ao Instituto Municipal de Ensino Superior de Assis como requisito do Curso de Graduação
Orientadora: Prof.a Ms. Regina Fumie Etó
Área de Concentração:
Grande área: Ciências Exatas e da Terra,
Área : Ciência da Computação
Assis 2011
3
FICHA CATALOGRÁFICA
Marques dos Santos, Danilo Yoshio Desenvolvimento de Robô (Scripts) de automatização de processos produtivos em plataforma WEB / Danilo Yoshio Marques dos Santos. Fundação Educacional do Município de Assis – FEMA -- Assis, 2011. 54 p. Orientadora : Prof.ª Ms Regina Fumie Etó Trabalho de Conclusão de Curso – Instituto Municipal de Ensino Superior de Assis – IMESA. 1 - Automatização de processos Web; 2– Robô automatizador
CDD:001.6 Biblioteca da FEMA
4
DESENVOLVIMENTO DE ROBÔ (SCRIPTS) DE
AUTOMATIZAÇÃO DE PROCESSOS PRODUTIVOS EM PLATAFORMAS WEB
Danilo Yoshio Marques dos Santos
Trabalho de Conclusão de Curso apresentado Instituto Municipal de Ensino Superior de Assis – IMESA e a Fundação
Educacional do Município de Assis – FEMA, como requisito do Curso de Graduação
analisado pela seguinte comissão examinadora
Orientadora:___Prof.ª Ms. Regina Fumie Etó
Analisador (1):___Prof. Ms. Felipe Alexandre Cardoso Pazinatto
Assis 2011
5
DEDICATÓRIA
Dedico este trabalho a
Toda equipe que desenvolveu o Cacique, Fernando Crosa, Horacio Branciforte,
Brenda Guerra e Juan Luna e José Carlos Rodrigues, coordenador da área de
Desenvolvimento de Produto do Mercadolivre.com® no Brasil por me apresentarem o
Cacique;
Patricio Traverso, gerente da área de Desenvolvimento de Produto do
Mercadolivre.com® e equipe Brasil e Argentina.
A Lucila Yumico Inoue dos Santos, Laercio Marques dos Santos, Guilherme Yukio
Marques dos Santos, Vanessa Tieko Marques dos Santos, Glaucia Medeiros Vieira da
Silva, Regina Fumie Eto e a todos meus amigos.
6
AGRADECIMENTOS
Minha mãe Lucila, meu pai Laercio, minha irmã Vanessa, meu irmão Guilherme,
que sempre me apoiou e está sempre ao meu lado para ajudar em todas as dificuldades e
desafios que aparecem pelo caminho.
Minha namorada, Glaucia, que sempre está ao meu lado ajudando atingir meus
objetivos, a me desenvolver como pessoa e que me faz sentir forte para a vida.
Meus amigos, que sempre são inspiração para mim.
José Carlos Rodrigues e equipe, que sempre me ensinam, ajudam e inspiram no
desenvolvimento pessoal e principalmente profissional.
Equipe Cacique e amigos argentinos, Fernando Crosa, Horacio Branciforte, Brenda
Guerra e Juan Luna, por me ensinar e ajudar com a ferramenta Cacique para o
desenvolvimento do trabalho de conclusão de curso e até no dia a dia de trabalho.
Regina Fumie Eto, por me ajudar durante todo o período da faculdade me
ensinando, ajudando e me agüentando e pela orientação do trabalho de conclusão de
curso.
7
RESUMO
O tema proposto tem o objetivo de mostrar um estudo e também uma automação
através de um “robô” de um processo de trabalho manual para um sistema desenvolvido
para web.
Para tanto, foi desenvolvido robôs (scripts) em linguagens Ruby e Selenium para
serem executados em um servidor Cacique que irá interpretá-los.
Este trabalho irá demonstrar as vantagens da automação de processos que
resultarão em melhorias para uma empresa que ainda utiliza o trabalho de forma manual
para processos em sistema web ZOHO CRM.
Esta automação não só trará um aumento de produtividade e segurança, como
também irá reduzir tempo e custo para a realização dos processos.
Palavras Chaves: 1 – Automatização de processos Web; 2– Robô automatizador
8
ABSTRACT
The proposed theme has the objective of showing a study and also an automation
with a “robot” of a handwork process on a system developed for web.
To this end it was developed robots (scripts) in Ruby and Selenium languages to be
executed on a server called Cacique where this server itself will interpret them.
This work will demonstrate the benefits of a process automation that will result in
improvements to a company which still uses handwork in web system process.
This automation will not only bring an increase of productivity and safety but also it
will reduce time and cost for carrying out the processes.
Keywords:
1 - Ruby, Ruby on Rails 2 - Process Automation Web 3 - automated robot
9
LISTA DE ILUSTRAÇÕES
Figura 2.1 – Arquitetura básica de uma aplicação Web .........................17
Figura 2.2 – Camadas do padrão MVC ..................................................21
Figura 2.3 – Estrutura básica da utilização do cacique ..........................23
Figura 2.4 – Selenium IDE 1.0.10 ..........................................................25
Figura 3.1 – Editor de scripts do Cacique ...............................................27
Figura 3.2 – Criando variáveis no projeto do Cacique ............................27
Figura 3.3 – Ambiente do set de dados ..................................................28
Figura 3.4 – Ambiente de execução .......................................................28
Figura 3.5 – Configurando uma Suite Figura ..........................................29
Figura 3.6 – Configuração de uma Suite ................................................30
Figura 3.7 - Histórico de execução dos Scripts ......................................30
Figura 4.1 – Estrutura básica do funcionamento do Robô. .....................39
Figura 4.2 – Automatização do sistema CRM da empresa Mercado
Livre.com®. ............................................................................................40
Figura 4.3 – Respondendo o contato de um cliente no sistema CRM
da empresa Mercado Livre.com®. ..........................................................41
Figura 4.4 – Alterando o contato de um cliente para um outro
processo no sistema CRM da empresa Mercado Livre.com® ................41
Figura 4.5 – Automatizando o sistema CRM ZOHO ...............................43
Figura 4.6 – Executando o processo de criação de tarefas ....................44
Figura 4.7 – Relatório de execução do robô .........................................445
45
10
LISTA DE TABELAS
Tabela 1 – Palavras reservadas do Ruby ...............................................20
Tabela 2 – Operadores lógicos do Ruby .................................................20
Tabela 3 – Comparação dos tempos de execução do robô ....................46
11
SUMÁRIO
1 – INTRODUÇÃO ..................................................................................... 12
1.1 - CONTEXTO .................................................................................... 12
1.2 - OBJETIVO ...................................................................................... 12
1.3 - JUSTIFICATIVA.............................................................................. 13
1.4 - MOTIVAÇÃO .................................................................................. 14
1.5 - ESTRUTURA DO TRABALHO ....................................................... 14
2 – Fundamentação Teórica ....................................................................... 15
2.1 - Tecnologias para processos na web .............................................. 15
2.2 - Linguagem Ruby............................................................................. 19
2.3 - Cacique .......................................................................................... 22
2.4 - Selenium IDE .................................................................................. 23
3 – Aplicativos Web para configuração do “Robô”. .................................... 26
3.1 – Utilização da Ferramenta Cacique ................................................. 26
3.2 - Instalação do Cacique .................................................................... 31
3.3 - Instalação do Servidor Web ............................................................ 32
3.4 - Iniciando os serviços do cacique .................................................... 33
4 – “Robô” automatizador de processos .................................................... 38
4.1 – Modelagem do “Robô” ................................................................... 38
4.2 – Exemplos de automatização do robo nos processos na Web ....... 39
4.3 – Desenvolvimento do Robô ............................................................ 42
4.4 – Análise de desempenho do Robô ................................................. 44
4.5 – Script do Robô ............................................................................... 47
5 – Conclusões. ......................................................................................... 52 Referencia Bibliográfica ............................................................................. 53 Pesquisas na Internet ................................................................................ 54
12
Capítulo 1
1 – INTRODUÇÃO
Neste capítulo será feita uma descrição do contexto em que o projeto está
inserido, assim como os objetivos e as justificativas para o desenvolvimento do
tema escolhido.
1.1 - CONTEXTO
A crescente demanda de aplicativos e de sistemas de desenvolvimento
para Web, tem provocado um aumento substancial de produtos voltados a
exploração de recursos da internet, principalmente no que se refere às
compras virtuais, vide o caso do MercadoLivre®.
As plataformas de programação e de sistemas para a Web, tem cada
vez mais utilizado ferramentas de software livre e “open source” (“ código
aberto”) concomitante ao aceite da grande maioria dos programadores nessas
plataformas.
Aliado ao fato de utilizar uma plataforma de desenvolvimento adequado
ao avanço tecnológico, provocado pelas novas tecnologias e às constantes
mudanças na área de TI (Tecnologia da Informação), o trabalho de
profissionais torna-se ainda mais complexo.
1.2 - OBJETIVO
Utilizando o conhecimento de programação nas diversas linguagens,
automação e aplicações para “web”, juntamente com o trabalho desenvolvido
com a empresa Mercado Livre, o objetivo da monografia de conclusão de curso
13
é mostrar o funcionamento e as vantagens da automatização de processos
para sistemas em plataformas web, utilizando um “robô” nesta empreitada.
1.3 - JUSTIFICATIVA
Este trabalho tem por justificativa apontar as vantagens do
desenvolvimento de automatização de processos, os recursos e o desempenho
dessa automatização em relação ao trabalho manual quanto ao requisito de
segurança e praticidade. Além de mostrar uma forma diferente de
desenvolvimento baseado em um aplicativo web independente da sua
linguagem de programação.
Para o desenvolvimento deste trabalho foram necessários:
§ Um computador com acesso à internet e plug-in Selenium IDE 1.0, IDE
para desenvolvimento do script do “robô” com plug-in para Ruby, uma
ferramenta do Cacique (versão para Windows) e navegador de internet
Mozilla Firefox 3.6 instalados.
§ Um computador com acesso a internet e sistema operacional Linux
(qualquer versão), navegador de internet Mozilla Firefox 3.6 e aplicativo
Cacique (versão Linux) instalados. Como alternativa ao computador
poderá ser utilizada uma máquina virtual como o Virtual PC ou VM Ware.
Para alcançar o propósito acima mencionado, serão explorados a
utilização e as vantagens da linguagem Ruby [http://www.rubyonrails.pro.br] junto
com a ferramenta Selenium IDE [http://seleniumhq.org/projects/ide], para
desenvolvimento de scripts de automatização de processos produtivos em
plataformas “web” [URUBATAN, Rodrigo, 2009]. E como consequência,
construir/implementar um exemplo de automatização utilizando essas
ferramentas.
14
1.4 - MOTIVAÇÃO
Com a implementação do robô será possível realizar verificações sobre
as compras realizadas no site de compra virtual, com a possibilidade de
tomadas de decisões a partir de perguntas e respostas do cliente de forma a
direcionar os problemas para os setores competentes ou mesmo de resolução
das mesmas, de forma automática, rápida e limpa. O que gerará maior
satisfação por parte dos clientes virtuais.
1.5 - ESTRUTURA DO TRABALHO
A monografia está organizada em cinco capítulos conforme descrito a
seguir:
O capítulo um apresenta a introdução e descreve os objetivos e as
motivações para o desenvolvimento do trabalho.
O segundo capítulo apresenta a fundamentação teórica necessária para
compreender conceitos específicos do trabalho onde será abordado a
linguagem de programação “open source” Ruby e Ruby on Rails para Web,
além da ferramenta Cacique e o Selenium IDE.
No terceiro capítulo é detalhado o modo de configuração da ferrramenta
Cacique, Selenium Client, do mesmo modo realizado em sites de compras pela
internet.
No quarto capítulo será apresentado o modelo do robô responsável pela
automatização de processos, onde será especificado suas funcionalidades,
bem como os parâmetros necessários para a análise de seu desempenho.
Por fim, no capítulo cinco serão apresentadas as conclusões e
sugestões para trabalhos futuros.
15
Capítulo 2
2 – Fundamentação Teórica
O estudo das tecnologias envolvidas nos processos para “web” será
relevante ao trabalho, primeiramente para adquirir conhecimentos voltados
para programação “web” e de firmar conceitos e procedimentos necessários ao
seu uso, quanto para utilização das diferentes linguagens de programação,
como é o caso da linguagem Ruby , da plataforma Cacique e Selenium, bases
desta monografia..
2.1 - Tecnologias para processos na web
Atualmente, as aplicações desenvolvidas para “web” estão crescendo
drasticamente, tanto por suas vantagens monetárias, quanto pelo avanço
tecnológico, frutos da popularização da Internet.
As empresas atualmente se utilizam das muitas tecnologias de licença
gratuita, chamado de software livre [http://www.fsf.org], para desenvolvimento
de seus softwares e aplicativos, pois estes têm um custo mais baixo e são tão
eficientes quanto as de tecnologias de softwares de licença proprietária.
O crescimento da utilização desses recursos avança muito rápido devido
ao surgimento de novas tecnologias como Java, PHP, Ruby, Selenium, entre
outras, consequência da popularização da Internet.
16
Para a comercialização de produtos intitulados de software livre tem-se a
definição:
Sendo que os quatro princípios de liberdade são:
· Liberdade Zero: Para qualquer propósito, tem o direito de executar o
software.
· Liberdade Um: Direito de estudar o software e modificá-lo conforme as
necessidades.
· Liberdade Dois: Poder redistribuir cópias, assim podendo ajudar outras
pessoas.
· Liberdade Três: Direito de modificar e melhorar o software, redistribuir as
suas melhorias e assim ajudar outras pessoas.
As vantagens das aplicações de software livre é a de funcionarem a
partir de uma rede interna ou pela internet, e de serem executadas e utilizadas
em muitos tipos de computadores, programas, e por muitas pessoas ao mesmo
tempo, com possibilidade de obter atualizações de dados frequentemente.
[http://www.alldreams.com.br].
A comunicação ocorre através de protocolos, onde ajudam no
mapeamento de ações dos usuários do lado do usuário.
O mais comum dos protocolos é o HTTP (Hypertext Transfer Protocol), e
seu funcionamento é através de uma requisição do browser o qual obtém a
resposta de um servidor. A Figura 2.1 mostra a arquitetura básica de uma
aplicação web com a comunicação do protocolo HTTP.
“Software Livre pode ser
comercializado sem problemas desde que
respeite e siga os quatro princípios de
liberdade” [MATOS, Francisco Jarbas
Teixeira, 2007 – Entendendo os recursos do
Linux – São Paulo: Digerati Books, 2007]
17
Figura 2.1 – Arquitetura básica de uma aplicação Web
Há dois tipos de pedidos mais comuns nas aplicações para web, o
método GET e o método POST.
§ Método GET – “Solicita ao servidor um recurso chamado de
solicitação URI. Os parâmetros da solicitação devem ser
codificados nessa solicitação, para que o mesmo os entenda.
Este é o método mais utilizado, pois é a forma como o browser
chama o servidor quando você digita um URL para que ele o
recupere.” [Gonçalves, Edson – Desenvolvendo Aplicações Web
com JSP Servlets, JavaServer Faces, Hibernate, EJB3
Persistence e AJAX - 2007]
§ Método POST – “Este método contém um corpo nos quais seus
parâmetros de solicitação já são codificados. O mais frequente
uso desse método dá-se na submissão de formulários HTML e
XHTML.” [Gonçalves, Edson – Desenvolvendo Aplicações Web
18
com JSP Servlets, JavaServer Faces, Hibernate, EJB3
Persistence e AJAX - 2007]
Uma aplicação desktop pode ser muito eficiente, rápida e usual, porém
sua distribuição é um tanto complicada. A instalação deve ser feita de
computador a computador. Para a aplicação “web”, a instalação, manutenção e
atualização são centralizadas. Isso pode ser feito no servidor e em todos os
computadores que necessitam do sistema, basta apenas acessar o servidor e
configurá-lo adequadamente para o uso.
“O desempenho de uma aplicação “web”
comparado a uma aplicação “desktop”, é na maioria
das vezes mais eficiente, pois quando temos uma
aplicação com diversas funções e recursos
avançados como, por exemplo, interface gráfica
muito carregada, isso deixa a aplicação pesada”
[http://www.macoratti.net/vbn_dkwb.htm].
Porém, de acordo com o Daniel Cárnio Junqueira e Renata Pontin de
Mattos Fortes no livro [Junqueira, Daniel Cárnio e Mattos, Renata Pontin de –
Introdução ao Desenvolvimento de Aplicações Web com Ruby on Rails] onde
citam que:
“...nas aplicações Desktop, mesmo quando
desenvolvidas numa arquitetura cliente-servidor, é
dada ao desenvolvedor mais liberdade na
comunicação entre a interface gráfica que é exibida
para o usuário com a parte responsável pelo
tratamento das informações e controle da interface,
sendo que a comunicação pode ser iniciada a partir
dos dois lados.”
19
Assim pode-se observar a ação do usuário, como ela ocorre no sistema
e como resultado pode ser feita uma notificação através da interface gráfica.
2.2 – Linguagem Ruby
Criada por Yukihiro “ Matz” Matsumoto ou simplesmente “ Matz”, em
1995, onde o mesmo uniu partes das suas linguagens favoritas (Perl, Smalltalk,
Eiffel, Ada, e Lisp) e formou uma nova linguagem que tem o equilíbrio da
programação funcional com a programação imperativa chamada Ruby.
Ruby é uma linguagem de script interpretada e orientada a objetos. Ela é
bastante utilizada para automação de tarefas e também para desenvolvimento
de aplicações web.
Como foi grandemente inspirada em Python e Perl (daí o nome “Ruby”,
outra pedra preciosa). “ Matz” queria uma linguagem mais poderosa que Perl e
mais orientada a objeto que Python.
As caracteristicas do Ruby são:
ü uma sintaxe enxuta, quase não se utiliza colchetes, e outros caracteres.
ü Todas as variáveis são objetos, onde até os do tipo “primitivos” (inteiro,
real, entre outros) são classes.
ü Através do Ruby Gems, é possível instalar e atualizar bibliotecas com
uma linha de comando, de maneira similar ao APT do Debian Linux.
ü Estão disponíveis diversos métodos de geração de código em tempo
real, como os "attribute accessors".
“Ruby é uma linguagem bastante simples e flexível.”
[JUNQUEIRA, Daniel Cárnio - MATTOS, Renata
Pontin de – Introdução ao Desenvolvimento de
Aplicações Web com Ruby on Rails]. As suas
características são:
20
§ Orientada a Objetos: No Ruby não existe tipo
primitivo, tudo nele é um objeto, incluindo
valor nulo e números.
§ Tipagem dinâmica: não se declara um tipo
para as variáveis do Ruby, elas tomam forma
conforme os valores assumidos pela variável.
§ Interpretada: “é uma linguagem interpretada, o
que permite rápido desenvolvimento pelo fato
de não ser necessário realizar os passos de
compilação e implantação (deploy).”
[JUNQUEIRA, Daniel Cárnio - MATTOS,
Renata Pontin de – Introdução ao
Desenvolvimento de Aplicações Web com
Ruby on Rails].
A tabela abaixo mostra todas as palavras reservadas da linguagem
Ruby.
alias and BEGIN begin break case class def
Defi
ned do else elseif END end ensure false
for If in module next nil not or
redo rescue retry return self super then true
undef unless until when while yield
Tabela 1 – palavras reservadas do Ruby
A tabela abaixo mostra os operadores da linguagem Ruby.
** ! ~ * / % + -
& << >> | ^ > >= <
<= <=> || != =~ && += -=
== === .. ... not and or
Tabela 2 – operadores lógicos do Ruby
21
A Sintaxe da linguagem Ruby, é semelhante à linguagem Python e Lisp,
bem funcional, pois foi esse propósito que “ Matz” queria com o Ruby.
Ruby on Rais é um metaframework desenvolvido em Ruby, ele é gratuito
e de código aberto para desenvolvimento de aplicações “web” e utiliza a
arquitetura Model-View-Controler (MVC) como cita Rodrigo [URUBATAN,
Rodrigo, 2009 – Desenvolvimento Fácil e Rápido de Aplicações Web Ruby on
Rails, 2009]. Este framework foi projetado por alguns motivos especiais como:
· Em um único framework, ter todas as ferramentas para um
desenvolvimento completo e atender as necessidades de
aplicações “Web”.
· Permitir a comunicação entre suas camadas de forma mais
transparente possível.
· Ser escrito totalmente em apenas uma linguagem.
· Seguir o padrão de arquitetura MVC (Model – View – Controller).
A arquitetura MVC e suas camadas é mostrada na Figura 2.2 .
Figura 2.2 – Camadas do padrão MVC
22
O modelo MVC é responsável pela representação das informações
operada pela aplicação, a visão é a camada responsável por exibir os dados
em forma específica para a interação e o controle é responsável por processar
e responder aos eventos, podendo invocar alterações na camada modelo.
2.3 – Cacique
Cacique é uma ferramenta desenvolvida em Ruby on Rails pela empresa
MercadoLibre® pelos colaboradores Fernando Crosa, Horacio Branciforte,
Brenda Guerra e Juan Luna que atualmente trabalham no MercadoLibre QA
Team (Argentina) [http://cacique.mercadolibre.com/?q=node/4]. Essa
ferramenta foi desenvolvida com a necessidade de efetuar testes em processos
das aplicações desenvolvidas na empresa MercadoLibre®.
Cacique é uma ferramenta de código fonte aberto, permitindo que
usuários desenvolvam otimizações de forma contínua para o mesmo. Pode se
automatizar todo tipo de tarefa de aplicativos sobre a web usando a ferramenta.
Sendo multiplataforma, Cacique pode ser executada em diversos
browsers como Mozilla Firefox, Internet Explorer, entre outros e vários browsers
ao mesmo tempo. Podendo também ser conectado a outros aplicativos como,
por exemplo, BDD, SAP, Excel, etc.
Alguns exemplos de uso que já foram utilizados, [Manual Del usuário –
HTTP://cacique.mercadolibre.com] são os testes automáticos de API’s, testes
automáticos de integração, carga massiva de dados, execução automática de
tarefas administrativas e execução de funções em SAP.
Utilizando a tecnologia Selenium IDE, pode-se obter scripts com
execuções pré-configuradas para sua execução automática.
A utilização do Cacique é muito simples, a partir do desenvolvimento de
scripts necessários para o seu projeto, podem-se juntar esses “scripts” com
uma “Suite” que é um recurso muito utilizado do cacique para que os “scripts”
sejam executados juntos e na ordem configurada.
23
Figura 2.3 – Estrutura básica da utilização do cacique
[http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_usuario.pdf]
Com essa “Suite”, podem-se criar execuções automáticas com
agendamento de data e horário pré-configurados.
Relatórios de execuções dos “scripts” são gerados, também através da
“Suite”, gerando um e-mail automático e enviado aos destinatários
configurados no seu agendamento da execução.
No capítulo 3 será abordado a configuração e instalação do Cacique
para a base de construção do robô.
2.4 – Selenium IDE
O Inicio do Selenium foi em 2004, na ThoughWorks – Chicago, que é
uma empresa global de consultoria em TI. Jason Huggins construiu o modelo
Core como “Java Script Test Runner”, para testes de tempos e gastos de uma
24
aplicação interna. Testes de aplicações é uma ação fundamental para uma
empresa de desenvolvimento de software.
Essa ferramenta foi apresentada por Jason aos seus colegas e esta
tinha um visual imediato, intuitivo e um potencial para se desenvolver como um
“framework” de testes para varias aplicações web.
No mesmo ano de 2004, houve uma discussão da abertura da fonte do
Selenium e tiveram posições diferentes para uma parte do servidor sendo essa
parte reescrita na linguagem JAVA. Dois membros da equipe, Aslak e Obie
Fernandez relataram que o cliente mudou para Ruby, estabelecendo a criação
de drivers em mais linguagens.
A Thought Workers utilizou Selenium para projetos comerciais e a
ferramenta foi melhorada com as lições aprendidas nos projetos desenvolvidos
ao redor do mundo.
O Selenium IDE é um ambiente integrado de desenvolvimento para
“scripts” Selenium. Ele foi criado pelo Shinya Kasatani no Japão quando o
mesmo ficou interessado no Selenium e percebeu que poderia dividir o código
principal em módulo IDE que é utilizado como um plug-in do Mozilla Firefox os
quais permite gravar, editar e depurar os “scripts” testes desenvolvidos. Essa
ferramenta possibilitou a abertura de novos caminhos além das idéias de
originais [http://seleniumhq.org].
O Selenium IDE é prático de se utilizar. Para poder gravar os passos de
um processo, antes de tudo deve-se inicializar o plugin Selenium IDE, depois
selecionar a linguagem que será utilizada juntamente com o Selenium, que no
caso deste trabalho será a linguagem Ruby.
Antes de iniciar um processo, o botão de “Record” na IDE deve estar
ativado, assim todas as ações de “click” (requisição) e digitações de textos será
armazenado na ordem efetuada dentro Selenium IDE.
A Figura 2.4 mostra o ambiente que grava os passos de um processo no
sistema.
25
Figura 2.4 – Selenium IDE 1.0.10 [http://seleniumhq.org]
Nesta IDE, pode-se utilizar do recurso de gravação de “script” ou criar
manualmente, com um apoio do auto-completar e da capacidade de se
movimentar em torno de comandos rapidamente. [http://seleniumhq.org].
Uma limitação que existe até o momento (junho/2011), é a não
recomendação de se instalar o “plug-in” Selenium IDE na sua ultima versão
1.0.11, devido à sua incompatibilidade com a versão do Mozilla Firefox 4.0 em
diante, até a versão 3.16 do Mozilla Firefox o seu uso e configuração é normal.
26
Capítulo 3
3 – Aplicativos Web para configuração do “Robô”.
Neste capítulo será fornecido os passos necessários para a
configuração e instalação da ferramenta Cacique e do Selenium Client,
utilizado pelo Mercado Livre para a base de construção do “robô”.
3.1 – Utilização da Ferramenta Cacique
Primeiro passo para utilizar o Cacique é a sua instalação. Essa deve
ocorrer na plataforma Linux, pois atualmente só existe a disponibilidade da
ferramenta para este sistema operacional, criando um servidor Web para que
um ou mais usuários possam acessar e executar a partir de outro computador,
podendo ser o sistema operacional Windows da Microsoft ou Linux. Os
arquivos de instalação estão no site da própria ferramenta:
http://cacique.mercadolibre.com.
Após a instalação e configuração do Selenium Client no cliente (estação
onde será executado os scripts desenvolvidos) e servidor (estação onde o
Cacique receberá as requisições de execução do cliente), pode se utilizar a
ferramenta como segue abaixo nas etapas de utilização.
Deve-se definir um diretório no ambiente do Cacique acessado pelo
endereço do servidor (ambiente Linux), e nesse ambiente, deve-se gerar um
“script” novo. Utiliza-se o Selenium-IDE para gravar as etapas do processo em
um aplicativo “Web” juntamente com a linguagem Ruby, assim pode-se
escrever o código neste “script” o qual será gerado e estará pronto para ser
executado.
O Cacique possui um editor de script que permite criar e modificar os
códigos, voltar à versão anterior do script, verificar a sintaxe da programação,
inserir funções entre outros recursos [http://cacique.mercadolibre.com]
conforme a Figura 3.1.
27
Figura 3.1 – Editor de scripts do Cacique [http://cacique.mercadolibre.com]
Existe o recurso de desenvolver um script em um editor externo, como
por exemplo, Netbeans, Eclipse, entre outros editores que suportam a
linguagem Ruby e Selenium podendo importá-los para o Cacique sem a
necessidade de utilizar o seu editor, isso gera uma exploração da sua
usabilidade.
A Figura 3.2 mostra a possibilidade de criar variáveis no próprio projeto,
facilitando a mudança de conteúdo dessas, sem a necessidade de editar o
código do “script”.
Figura 3.2 – Criando variáveis no projeto do Cacique
[http://cacique.mercadolibre.com]
A etapa seguinte, assim que o script estiver pronto, é criar um conjunto
de dados onde se podem agregar vários casos para que se possam executar
28
vários conjuntos de dados de forma unitária ou em paralelo, conforme
descreve o manual do usuário.
[http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_usuario.pdf].
A Figura 3.3 mostra o ambiente onde é criado o conjunto de dados.
Figura 3.3 – Ambiente do “set” de dados [http://cacique.mercadolibre.com]
A execução do script no primeiro momento pode ser feita manualmente
através do botão “Run” conforme mostra a Figura 3.4 (item triangular da cor
verde na barra de ferramentas citado na Figura 3.4).
Figura 3.4 – Ambiente de execução
[http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_usuario.pdf]
Um ponto importante antes de executar qualquer script, é se certificar
que a ferramenta Selenium cliente esteja sendo executada. Se a mesma não
estiver ativa, o script não executará.
29
A próxima etapa é a configuração de “Suites”. Para criar uma “Suíte”
deve-se selecionar os scripts que irão contê-la e organizar a ordem de
execução destes scripts. A Figura 3.5 mostra o ambiente que contém o diretório
dos scripts.
Figura 3.5 – Configurando uma Suite Figura
[http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_usuario.pdf]
Assim que uma “Suite” é criada, a próxima etapa é configurar a mesma
para uma execução automática em uma data e um horário pré determinado,
podendo haver uma repetição contínua de sua execução.
Para configurar, deve ser selecionada a plataforma (um browser),
selecionar uma porta e um IP de onde será executado (geralmente seleciona o
IP da estação cliente). A porta a ser utilizada é a 4444 (padrão para o
funcionamento do Cacique). A seleção do Site, Ambiente e “Con-queries”
(quando o script necessitar acessar uma base de dados) são opcionais,
podendo deixar sem seleção.
Con-queries é uma opção para se selecionar no momento da
configuração da execução do robô, quando o script tem a necessidade de
acessar um banco de dados.
A data e hora da execução são configurações obrigatórias, definindo as
repetições nos seus horários programados. Outro ponto importante é que a
data e o horário serão baseados no horário do sistema.
30
A Figura 3.6 mostra a tela de configuração de uma Suite.
Figura 3.6 – Configuração de uma Suite [http://cacique.mercadolibre.com]
O Cacique possui também um histórico dos “scripts” executados, onde
pode se verificar detalhes de execução, problemas ocorridos, tempo de
execução, se o script foi executado na hora definida, etc.
A Figura 3.7 mostra uma lista de Suites e scripts executados.
Figura 3.7 - Histórico de execução dos Scripts [http://cacique.mercadolibre.com]
31
3.2 - Instalação do Cacique
Para a instalação do Cacique é necessário um computador com o
sistema operacional Linux Ubuntu ou Debian instalado, porém é recomendado
pelos desenvolvedores a utilização do Ubuntu. Neste trabalho foi utilizado a
versão 11.04 do Linux Ubuntu.
Após a instalação padrão do Linux, faça o download do pacote de
arquivos do Cacique que se encontra no site http://cacique.mercadolibre.com,
extraia os arquivos em uma pasta onde desejar.
Neste segundo passo, abra um terminal do Linux e utilize o seguinte
comando:
user@user:~$ sudo su
O Comando acima, irá solicitar a senha de administrador, pode inserir a
senha de seu login de administrador do computador. Trocando para “sudo”, não
terá problemas de permissão ou qualquer outra restrição nas etapas da
instalação.
Após extrair todos os arquivos do pacote do Cacique, ainda no terminal
acesse a pasta onde se encontra os arquivos e execute o comando abaixo:
user@user:/cacique# ./installer.sh
O terminal irá mostrar diversas linhas de comando e os arquivos sendo
instalados. Quando aparecer uma linha perguntando se deseja prosseguir com
a instalação, somente aceite com a letra “Y” e teclando o “Enter”.
Completado o instalador, o servidor terá todos os arquivos necessários
para ser executado. Para continuar, deve-se recarregar o perfil de usuário com
o comando abaixo:
user@user:/cacique# source /etc/profile
32
Após recarregar o usuário, será necessário configurar o arquivo
referente à base de dados. Abra a pasta onde foram extraídos os arquivos do
cacique, depois acesse a pasta “config” e abra o arquivo “database.yml”.
Neste arquivo, nas linhas onde se encontram os “passwords” de
“development”, “test” e “production”, altere para a senha que foi configurada na
etapa da instalação. Nas linhas de usuários, altere para o usuário que foi
configurado o “mysql”, se foi o usuário “root”, altere o que está para “root”.
Configurado o arquivo da base de dados, será necessário ter a base que
será utilizada para armazenar todas as informações. No terminal execute o
comando abaixo:
user@user:/cacique# rake db:create RAILS_ENV=production
Se ocorrer um erro e a mensagem mostrar que não existe o “rake”
instalado, basta utilizar o comando abaixo para instalá-lo.
user@user:/cacique# apt-get install rake
Após criar a base de dados, será necessário migrar a base do Cacique
para esta que foi criada, assim terá todas as tabelas prontas para serem
utilizadas. Utilize este comando abaixo para começar a migrar.
user@user:/cacique# rake db:migrate RAILS_ENV=production
Completando a migração, a base de dados estará pronta para ser
utilizada.
3.3 - Instalação do Servidor Web
Para que o Cacique execute é necessário a instalação do servidor web,
que nesse caso será o Apache com Passenger.
33
Para a instalação, deve ser seguidos os passos no site
http://www.modrails.com/install.html.
Primeiro deve-se abrir um terminal e executar o comando abaixo para
instalar o Passenger.
user@user:/# gem install passenger
Depois execute o comando abaixo para configurar o Apache com
Passenger.
user@user:/# passenger-install-apache2-module
Instalado o Apache, deve ser executado o commando abaixo para
inicializar o serviço.
user@user:/# /etc/init.d/apache2 start
Feito as configurações acima, o servidor web estará executando e
pronto para receber a execução do Cacique.
3.4 - Iniciando os serviços do cacique
Para utilizar o cacique, serão necessárias algumas execuções de
serviços do servidor. É recomendado executar cada comando em um console
(terminal) diferente, resumindo, um terminal para cada serviço.
Primeiramente deve-se deixar o servidor executando no primeiro
terminal utilizando as teclas “Ctrl+Alt+F1”, fazendo login e alterarando o usuário
através de “sudo”. Utilize o comando abaixo para inicializar o servidor.
user@user:/cacique# script/Server –e production -80
34
Esse próximo serviço, recebe diferentes execuções geradas no cacique
e enviadas à diferentes “workers”(responsável por executar os scripts)
conectados para as suas execuções. Acesse o segundo terminal com as teclas
“Ctrl+Alt+F2” e repita os mesmos passos de login do terminal anterior. Utilize o
comando abaixo para carregar o serviço.
user@user:/cacique# script/starling.rb start
Esse terceiro serviço é responsável pelo Cache que é utilizado pelo
Rails. Acesse o terceiro terminal com as teclas “Ctrl+Alt+F3” e repita os
mesmos passos de login do primeiro terminal. Utilize o comando abaixo para
carregar o serviço.
user@user:/cacique# /usr/bin/memcached –u [usuario] –c 1000 –
m 64 –p [qualquer porta] > /dev/null &
No lugar de [usuário], deve se digitar o usuário que esteja com a sessão
aberta no terminal, no caso será o usuário administrador do Linux e no lugar de
[qualquer porta], utilize uma porta que não esteja sendo utilizada, por exemplo
“8909”, “1003”, etc.
Esse terminal, ficará liberado para uso depois de executar a linha de
comando acima.
Esse quarto serviço é utilizado para a execução do Cacique, mostrando
as saídas de dados como, por exemplo, um cálculo feito no script que mostra
seu resultado na tela e mensagens de erros.
Acesse o quarto terminal com as teclas “Ctrl+Alt+F4” e repita os mesmos
passos de login do primeiro terminal. Utilize o comando abaixo para carregar o
serviço.
user@user:/cacique# script/workling_client start –t
35
O quinto serviço é responsável de executar os scripts de Selenium em
diferentes configurações de browsers.
Acesse o quinto terminal com as teclas “Ctrl+Alt+F5” e repita os mesmos
passos de login do primeiro terminal. Acesse a pasta conforme o caminho
abaixo.
user@user:/cacique# cd extras/selenium-grid-1.0.8
Assim que estiver posicionado na pasta acima, execute o comando
abaixo para carregar o serviço.
user@user:/cacique/extras/selenium-grid-1.0.8# ant launch-hub
Esse último serviço é um processo de Rails que é responsável por
executar as Suites programadas e agendadas do Cacique.
Acesse o sexto terminal com as teclas “Ctrl+Alt+F6” e repita os mesmos
passos de login do primeiro terminal. Utilize o comando abaixo para carregar o
serviço.
user@user:/cacique# rake jobs:work RAILS_ENV=production
Antes de começar a utilizar o cacique, é necessária também a utilização
do “Cacique-on-my-computer”. Ele é importante para que, ao se desenvolver
um script, o mesmo possa ser executado a partir do servidor, ou através de
acesso remoto, por um computador cliente.
Faça download neste endereço abaixo.
http://localhost:3000/CaciqueOnMyComputer.zip
Esse pacote de arquivos está junto com o pacote de arquivos do
Cacique. Extraia na pasta do projeto.
36
Se a execução for a partir do servidor (linux), abra o terceiro terminal
onde foi executado o serviço de “cache” do Cacique, o qual estará livre.
Acesse a pasta conforme o caminho abaixo.
user@user:/cacique# cd CaciqueOnMyComputer
Posicionando-se na pasta acima, execute o comando abaixo para
carregar o serviço do Cacique on my computer.
user@user:/cacique/CaciqueOnMyComputer# java –jar selenium-
server-1.0.3/selenium-server.jar –forcedBrowserMode *Firefox –
singleWindow
Se for utilizar um computador com sistema operacional Windows e com
acesso remoto ao servidor cacique, é necessário criar uma pasta na raiz do
sistema de arquivos com o nome profile, como segue abaixo.
C:\profile
Copie todos os arquivos da pasta profile do Firefox e cole nesta pasta
profile que foi criada recentemente na raiz do sistema de arquivos.
Os arquivos estão no caminho abaixo.
C:\Documents and Settings\usuario\Dados de
aplicativos\Mozilla\Firefox\ Profiles\g4jtnfk0.default
Essa pasta “g4jtnfk0” tem um nome diferente para cada computador,
portanto, verifique o caminho e coloque o nome que se encontrará no momento
de copiar os arquivos.
37
Copiado os arquivos necessários, basta executar o arquivo
“runFirefox.bat” que se encontra dentro da pasta CaciqueOnMyComputer e
acessar o IP do servidor para poder utilizar o Cacique, como segue abaixo.
http://192.168.0.1:3000/session/new
Com todos os serviços do Cacique executando, acesse o “browser” no
caminho abaixo para fazer “login” no Cacique e começar a utilizá-lo.
http://localhost:3000
Acessando o endereço acima, será mostrado na página principal, o
campo de login e senha. Utilize o usuário padrão conforme abaixo.
Usuário: cacique
Senha: admin
Feito o login, basta começar a desenvolver os scripts e executá-los.
38
Capítulo 4
4 – “Robô” automatizador de processos
Neste capítulo será modelado o robô responsável pela automatização de
processos. Primeiramente será descrito a modelagem do robô automatizador e
posteriormente a configuração da interface de aplicação para Web, que no
trabalho será o Cacique com Selenium IDE.
4.1 – Modelagem do “Robô”
O processo de automatização deste trabalho, utilização do “robô”,
consiste em acessar um sistema (aplicativo Web) e nesse sistema tratar como
se fosse uma pessoa realizando todo o trabalho.
O script do robô será executado sobre um aplicativo “Web” já
desenvolvido, por isso dependendo do aplicativo Web, não será necessário
uma base de dados ou outros tipos de recursos que sejam de programação
externa, fora do aplicativo Web que está sendo automatizado.
Normalmente essa automatização, utiliza dados do próprio aplicativo, a
base de dados do aplicativo e o que for necessário.
A Figura 4.1 na próxima página, mostra o funcionamento do robô em
geral, uma estrutura básica de seu funcionamento e interação com o aplicativo
“Web”.
39
Figura 4.1 – Estrutura básica do funcionamento do Robô.
O robô na maioria das suas funções, captura dados da tela dos
aplicativos, por exemplo, um elemento do sistema que esteja em HTML e
processa uma função programada com este dado. Quando há necessidade de
inserir um dado externo no sistema, este dado é escrito em forma de texto no
código do robô.
4.2 – Exemplos de automatização do robô nos processos na “Web”
Existem diversos tipos de automatização de processos na “Web”
funcionando em diversas tecnologias e linguagens de programação. Neste
trabalho será desenvolvido uma automatização semelhante ao aplicado na
empresa Mercado Livre.com.
Em geral, as empresas que fazem contato com usuários por e-mail, chat
ou outros meios, utilizam um sistema chamado CRM (“Customer Relationship
Management”), o qual pode variar conforme seu desenvolvimento, possuindo
40
porém o mesmo objetivo e funcionalidade que é a de atender o cliente o mais
rapidamente possível e sem geração de erros.
A automatização feita no MercadoLivre® foi em cima de seu CRM
proprietário, desenvolvidos com vários scripts com várias funções. Um exemplo
básico de um script é o “Robô”, que responde e-mails de contato de seus
usuários do seu site.
São funções básicas como fazer login no sistema, verificar os e-mails de
um determinado assunto, verificar as condições solicitadas, fazer uma lógica
que verifica se pode ou não atender essas condições e responder o e-mail com
uma resposta pré definida e encerrar o caso.
Esta automatização que responde e-mails automáticos, atualmente
responde em média 150 casos em aproximadamente uma hora de execução
do robô. Isso é equivalente a um trabalho manual de duas pessoas por dia no
caso das políticas de trabalho do Mercado Livre.com®.
A figura 4.2 mostra o funcionamento do robô sobre o sistema CRM onde
está sendo feita uma análise de dados, onde os mesmos podem ser
verdadeiros ou falsos, de acordo com valores pré-definidos para atender este
contato.
Figura 4.2 – Automatização do sistema CRM da empresa Mercado Livre.com®.
41
Já a figura 4.3 mostra o robô analisando um contato feito pelo cliente
através do site do Mercado Livre.com® e enviando um e-mail com uma
resposta informativa contendo os passos que o cliente deve seguir no site para
solucionar o seu problema.
Figura 4.3 – Respondendo o contato de um cliente no sistema CRM da
empresa Mercado Livre.com®.
A figura 4.4 mostra que quando um processo não é suficiente para
solucionar o problema do cliente, ele é enviado a outro processo. Essa
verificação é feita através dos dados do cliente cadastrados no sistema
Figura 4.4 – Alterando o contato de um cliente para um outro processo no
sistema CRM da empresa Mercado Livre.com®
42
Um ponto importante é que este robô não possui uma inteligência
artificial, todos os cálculos efetuados são funções lógica de verdadeiro ou falso,
sendo assim não é possível automatizar um processo onde são necessárias
respostas dinâmicas para um determinado caso.
4.3 – Desenvolvimento do Robô
Foi escolhido um sistema CRM (“Customer Relationship Management”)
“on line” chamado ZOHO. Ele é um sistema completo com disponibilidade de
vários processos e funções.
Neste sistema CRM, os contatos de clientes passam a ser casos e a
automatização será desenvolvida criando tarefas para cada caso dependendo
de seus dados.
Os casos foram criados manualmente para serem utilizados neste
trabalho, simulando o contato de um cliente.
O primeiro passo foi executar o sistema ZOHO CRM e executar o
Selenium IDE com formato de saída para linguagem Ruby. A partir do Selenium
IDE, foi feita a gravação dos passos que deveriam ser feitos no sistema
manualmente.
Depois de gravado todos os passos, o código do Ruby com Selenium foi
copiado para o editor do Cacique onde foi desenvolvida a lógica.
Com o processo definido, foram necessários dados - pré definidos -
para que fossem comparados com os dados do sistema CRM. Para isso, foram
criadas variáveis atribuindo valores no inicio do “script” do Cacique.
Por exemplo: definiu-se uma variável “name” onde a mesma obteve um
valor de “Maria” e comparou-se com a variável “user_name” que o sistema
capturou no campo, conforme a sintaxe de Ruby abaixo:
43
name = ‘Maria’
If user_name == name
puts ‘Nome do usuário é: ‘+user_name.to_s
end
O código acima mostrou o nome do usuário capturado no sistema em
formato do tipo String na sintaxe da linguagem Ruby, onde está “.to_s”.
Escrevendo de forma mais clara seria: se usuário capturado no campo “nome”
no sistema for igual a “Maria”, mostrar na tela o usuário capturado em formato
de caracter.
Utilizando essa mesma lógica de comparação e/ou outras lógicas,
podem-se desenvolver automatizações sobre outros sistemas e sites.
A figura 4.5 abaixo mostra o funcionamento do robô sobre o sistema
CRM ZOHO, onde está sendo feita a verificação dos dados dos casos na fila
de nome “Todos os casos”.
Figura 4.5 – Automatizando o sistema CRM ZOHO
44
A figura 4.6 mostra a execução do script sobre o sistema CRM ZOHO no
processo de criação de tarefas onde os dados dos casos já foram analisados e
feita a lógica e cálculos com os mesmos.
Após criar uma tarefa, a programação que está no script “manda” o robô
executar novamente até que não existam mais casos para criar tarefa. Há uma
lógica que verifica sempre a quantidade de casos na fila “Todos os casos”.
Figura 4.6 – Executando o processo de criação de tarefas
4.4 – Análise de desempenho do Robô
A análise de desempenho foi feita seguindo o processo de criação de
tarefas manualmente, somando quantidade de cliques e texto para inserir nos
campos necessários, contados em um cronômetro.
45
Puderam-se obter no total de sete cliques de mouse, dois campos de
textos sendo que o primeiro contém treze caracteres e o segundo texto
contendo vinte e quatro caracteres e somando as análises necessárias como:
- verificar assunto do caso,
- data de criação,
- e nome do contato.
O processo manual a partir do “login” no sistema, levou
aproximadamente 120 segundos para realizar a criação de uma tarefa sendo
que a execução do robô levou aproximadamente 60 segundos por criação de
tarefa.
A figura 4.7 mostra o relatório contendo o tempo de execução do robô.
Figura 4.7 – Relatório de execução do robô.
46
Foi utilizado a função “Time.now” para obter a data e hora atual no inicio
da execução e no final, e assim, por subtração, obter a diferença de tempo de
execução.
Segue abaixo a função de calculo do tempo de execução:
start = Time.now
run_time_final = Time.now - start
A variável “start” foi declarada no inicio do “script” e a variável
“run_time_final” foi declarada no final, onde a mesma recebe a diferença entre
as duas datas e horas.
A tabela 3 mostra os tempos de execução do robô para uma amostra de
cinco casos do sistema CRM ZOHO em uma conexão de internet com a
velocidade de 1 Mbps via a cabo.
CASO ANALISADO TEMPO APROXIMADO
DE EXECUÇÃO
MANUAL
TEMPO DE
EXECUÇÃO
AUTOMÁTICA
DIFERENÇA
ENTRE AS
EXECUÇÕES
Problema com o meu produto 120 sec. 59.58132 sec 60.41868 sec.
Problema com o meu produto 122 sec. 60.61296 sec 61.38704 sec.
Problema com o meu produto 121 sec. 61.78223 sec 59.21777 sec.
Problema com o meu produto 119 sec. 60.64150 sec 58.35850 sec.
Problema com o meu produto 120 sec. 59.95623 sec 60.04377 sec.
MÉDIA DOS TEMPOS DE
EXECUÇÃO 120,4 sec. 60.514848 sec. 59.885152 sec.
Tabela 3 – Comparação dos tempos de execução do robô.
Pela tabela 3, pode-se verificar que o tempo de execução do caso
analisado teve uma performance de aproximadamente 50%, pois o tempo de
execução do robô foi praticamente a metade do tempo da execução manual. É
possível gerar mais tabelas para cada caso a ser analisado, principalmente
onde há maior dispendimento de tempo de processo convencional.
47
4.5 – Script do Robô
O script abaixo mostra toda programação feita na linguagem Ruby e
Selenium.
As linhas comentadas pelo simbolo #, descrevem o que está sendo
executado no script do robô.
#------------------------------------------------------------------------- # Simulação de um sistema CRM (aplicativo web) # @uthor: Danilo Yoshio Marques dos Santos # e-mail: [email protected] #------------------------------------------------------------------------- #------------------------------------------------------------------------- # Acessa o site do sistema CRM #------------------------------------------------------------------------- selenium_init "http://crm.zoho.com/crm/login.sas" selenium.open "/" sleep 2 #------------------------------------------------------------------------- # Marca a data e hora que o robô iniciou #------------------------------------------------------------------------- start = Time.now #------------------------------------------------------------------------- # Fazer login no CRM ZOHO #------------------------------------------------------------------------- selenium.type "lid", "cacique1" sleep 2 selenium.type "pwd", "cacique"
sleep 2
selenium.click "sec"
selenium.click "submit"
sleep 5
selenium.wait_for_page_to_load "30000"
sleep 2
selenium.select_window "null"
selenium.click "css=#tab_Cases > nobr"
sleep 3
48
#----------------------------------------------------------------------------------------
# Calculo de total de paginas
#----------------------------------------------------------------------------------------
total_paginas = selenium.get_table("//div[@id='idForCV']/table[1].1.1")
total_paginas =
total_paginas.to_s.split(' ')
total_casos = total_paginas[3].to_s
puts 'Total de casos = ' + total_casos.to_s
puts ''
#----------------------------------------------------------------------------------------
# Opcao de mostrar 50 casos por pagina
#----------------------------------------------------------------------------------------
selenium.click "currentOption"
selenium.select "currentOption", "label=50"
selenium.click "//select[@id='currentOption']/option[5]"
i = 3
link = 462614000000050165
while
num_caso = selenium.get_table("listViewTable.#{i.to_s}.2")
assunto_caso = selenium.get_table("listViewTable.#{i.to_s}.3")
tipo_contato_caso = selenium.get_table("listViewTable.#{i.to_s}.4")
prioridade_caso = selenium.get_table("listViewTable.#{i.to_s}.5")
data_criacao_caso = selenium.get_table("listViewTable.#{i.to_s}.6") # formato da
data:"21-10-2011 03:37 AM"
usuario_caso = selenium.get_table("listViewTable.#{i.to_s}.7")
puts '--------------------------------------------------------------'
puts 'Numero do caso: ' + num_caso.to_s
puts 'Assunto: ' + assunto_caso.to_s
puts 'Tipo do contato: ' + tipo_contato_caso.to_s
puts 'Prioridade: ' + prioridade_caso.to_s
puts 'Data de criacao: ' + data_criacao_caso.to_s
puts 'Nome do usuario: ' + usuario_caso.to_s
puts ''
49
data1 = data_criacao_caso.to_s # data1 = 21-10-2011 03:37 AM
data1 = data1.to_s
data1 = data1.split(' ')
data1 = data1[0].to_s
data1 = data1.to_s
data1 = data1.split('-')
puts 'Data capturada: ' + data1[0].to_s
puts 'Mes capturado: ' + data1[1].to_s
puts 'Ano capturado: ' + data1[2].to_s
dia = data1[0].to_s
mes = data1[1].to_s
anoA = 2011
mesA = 1
mesB = 2
mesC = 3
mesD = 4
mesE = 5
mesF = 6
mesG = 7
mesH = 8
mesI = 9
mesJ = 10
mesK = 11
mesL = 12
dia_in = 0
mes_in = 0
if mes == '1' || mes == '3' || mes == '5' || mes == '7' || mes == '8' || mes == '10' ||
mes == '12'
dia_test = '31'
end
if mes == '2' || mes == '4' || mes == '6' || mes == '9' || mes == '11'
dia_test = '30'
end
50
if dia.to_i < dia_test.to_i
dia_in = dia.to_i + 1
mes_in = mes.to_i - 1
end
if dia.to_i == dia_test.to_i
dia_in = 1
mes_in = mes
end
if assunto_caso == 'Problema com o meu produto'
selenium.click "listView_#{link.to_s}"
sleep 3
solucao_caso =
selenium.get_table("//div[@id='462614000000003759']/table.0.1")
if solucao_caso == '<Não há Registros>'
sleep 1
selenium.click "task"
sleep 3
selenium.click "property(Subject)"
sleep 1
selenium.type "property(Subject)", "Solucao do caso"
sleep 1
selenium.click "//input[@name='property(Due Date)']"
sleep 1
selenium.click "//td[@onclick=\"selectdateshow('#{dia_in.to_s}
#{mes_in.to_s} 2011')\"]"
sleep 1
selenium.click "//input[@name='property(Send Notification Email)']"
sleep 1
selenium.click "property(Description)"
sleep 1
selenium.type "property(Description)", "Atender o caso em ate 24
horas"
sleep 1
51
selenium.click "//div[@id='show']/form/table[3]/tbody/tr/td/input[1]"
sleep 3
puts 'Tarefa criada com sucesso!'
puts '--------------------------------------------------------------'
puts ''
puts ''
selenium.click "//a[@id='tab_Cases']/nobr"
link = link.to_i
link = link - 8
i = i + 1
sleep 3
run_time = Time.now - start
puts 'Tempo que levou para esta tarefa: '+run_time.to_s
p sprintf("%d min ", run_time / 60) + sprintf("%0.2f sec", run_time % 60)
else
puts 'Ja existe tarefa para este caso!'
puts '--------------------------------------------------------------'
puts ''
puts ''
selenium.click "//a[@id='tab_Cases']/nobr"
link = link.to_i
link = link - 8
i = i + 1
sleep 3
end
end
end
#run_time = Time.now - start
#p sprintf("%d min ", run_time / 60) + sprintf("%0.2f sec", run_time % 60)
selenium.close
selenium.stop
52
Capítulo 5
5 – Conclusões.
Os resultados obtidos com o funcionamento do robô mostraram que o
processo de automatização foi realizado de forma eficaz, executando as tarefas
com agilidade e precisão, vide a tabela3 do Capitulo 4.
Para o caso adotado, o processo foi executado a uma velocidade duas
vezes maior se comparado a um trabalho manual.
Dessa forma, o robô pode ser utilizado para a execução de tarefas
operacionais repetitivas que não necessitem de análise subjetiva, liberando o
profissional dedicado a esta função.
Esta automatização trará aumento de produtividade e segurança aos
processos, já que praticamente não há mais a interferência humana, reduzindo
tempo e custo para a sua realização, além de permitir maior tempo de
dedicação dos profissionais à atividades mais complexas, que dependem de
seu conhecimento e experiência.
Como proposta para trabalhos futuros, sugere-se a implementação de
robôs em processos dinâmicos, onde as tomadas de decisão possam ser
executadas utilizando ferramentas ou implementação em sistemas de
inteligência artificial ou mesmo em sistemas adaptativos. Essas modificações
podem trazer um maior controle dos processos, utilizando-se de benefícios
próprios de arquiteturas como sistemas distribuidos ou híbridos, e utilizar
métodos de análise de desempenho mais robustos.
53
Referencia Bibliográfica
GONÇALVES, Edson – Desenvolvendo Aplicações Web com JSP
Servlets, JavaServer Faces, Hibernate, EJB3 Persistence e AJAX – 2007
JUNQUEIRA, Daniel Cárnio - MATTOS, Renata Pontin de – Introdução
ao Desenvolvimento de Aplicações Web com Ruby on Rails ?
MATOS, Francisco Jarbas Teixeira, 2007 – Entendendo os recursos do
Linux – São Paulo: Digerati Books, 2007
MEDEIROS, Verônica Pedrozo, 2009 – Construção de Sistemas Web
utilizando ferramentas livres – Instituto de Pesquisas Aplicadas e
Desenvolvimento Educacional – IPADE, 2009
URUBATAN, Rodrigo, 2009 – Desenvolvimento Fácil e Rápido de
Aplicações Web Ruby on Rails – São Paulo: Editora: Novatec, 2009
54
Pesquisas na Internet
All Dreams Soluções de Software e E-commerces – Disponível em:
<http://www.alldreams.com.br - acesso em 07/04/2011>
Cacique – Disponível em:
<http://cacique.mercadolibre.com – acesso em 14/02/2011>
Cacique – Sobre a ferramenta Disponível em:
< http://cacique.mercadolibre.com/?q=node/4 - acesso em 14/02/2011>
Macoratti.net – Disponível em:
<http://www.macoratti.net/vbn_dkwb.htm - acesso em 05/04/2011>
Manual do Usuário – Disponível em:
<http://cacique.mercadolibre.com/sites/default/files/CCQ_manual_del_us
uario.pdf - acesso em 15/05/2011>
Ruby on Rails – Disponível em:
<http://www.rubyonrails.pro.br – acesso em 03/04/2011>
Ruby on Rails – Disponível em:
<http://ruby-br.org – acesso em 03/04/2011>
Rede nacional de Ensino e Pesquisa – Disponível em:
<http://www.rnp.br - acesso em 20/05/2011>
Selenium IDE - Disponível em:
<http://seleniumhq.org/projects/ide - acesso em 05/04/2011>