Curso treinamento automação de testes com selenium
1. (48) 4052-9536 / 9540
contato@qualister.com.br
• Terceirização de profissionais
• Consultoria de teste
• Avaliação de usabilidade
• Automação de testes
• Testes de performance
• Treinamentos
Treinamento
Automação de testes com
Selenium
www.qualister.com.br
2. Quer saber mais?
Estes são apenas alguns slides do curso
de automação de testes com selenium
Para maiores informações e novas turmas, visite nosso site:
http://www.qualister.com.br/cursos
www.qualister.com.br
4. Instrutor
Elias Nogueira
Email: elias.nogueira@gmail.com
Blog: http://sembugs.blogspot.com
Arquiteto de Teste de Software com ênfase em automação de Teste. Atualmente trabalha como Consultor
Técnico na linha de ALM da Hewlett Packard e Consultor em Automação e Teste e Instrutor na Qualister.
Possui a certificação CSTE – Certified Software Tester pela QAI e possui uma Pos Graduação em Teste de
Software
Já deu diversas palestras sobre Java e Teste de Software. Ativo na comunidade de Teste também
coordenou alguns eventos e encontros de testes, como no Testadores e no The Developers Conference
@eliasnogueira
http://sembugs.blogspot.com
http://slideshare.net/elias.nogueira
http://about.ne/eliasnogueira
www.qualister.com.br
5. Sobre a Qualister
• Fundação: 2007.
• Sobre a Qualister: A Qualister é uma empresa nacional, constituída a partir da união
de profissionais qualificados e certificados na área de testes e qualidade de
software, com o objetivo de integrar, implementar e implantar soluções com base nas
melhores práticas do mercado e normas internacionais.
• Colaboradores: A Qualister é composta por colaboradores pós-graduados e
certificados na área de testes (CBTS, CSTE) com larga experiência na indústria de
Tecnologia da Informação.
• Área de atuação: A Qualister é uma empresa especializada em serviços de
qualidade e teste de software. Tem como linhas de atuação consultoria em
teste/qualidade de software, outsourcing (terceirização dos serviços através da
alocação de profissionais) e treinamentos.
www.qualister.com.br
6. Parcerias internacionais
Soluções para automação, profilling e gestão
Soluções para testes de performance
Soluções de apoio a avaliação de usabilidade
www.qualister.com.br
8. O que é o Selenium
• Selenium é um conjunto de ferramentas para automação de
browsers web
• Atualmente é composto por 4 grandes projetos
Selenium IDE
Plugin do Firefox que permite a gravação e execução de ações efetuadas
em uma página web
Selenium Remote Control
Permite o controle e execução de scripts em outros browsers e máquinas
Também utilizarmos linguagens de programação para criar os scripts
Selenium Webdriver
Emula nativamente diversos browsers localmente ou em máquinas remotas
através de programação
Selenium Grid
Habilita a execução de scripts simultaneamente em diferentes máquinas
www.qualister.com.br
9. O que é o Selenium
• Nosso foco será no Selenium IDE e no Selenium Remote
Control
• O suporte a browsers é bem extenso, como Firefox, Internet
Explorer, Opera, Safari e GoogleChrome
• Também com suporte a linguagens de programação como:
Java, C#, Python, PHP, Ruby e Perl
• E suporte a Sistemas Operacionais: Windows, Linux, OsX e
Solaris
• Para saber mais sobre o suporte do Selenium acesse
http://seleniumhq.org/about/platforms.html
www.qualister.com.br
10. O que é o Selenium
• Uma grande dica é sempre acompanhar a página de
documentação do Selenium, que é atualizada
constantemente, bem como outros itens:
• Documentação: http://seleniumhq.org/docs/
• Twitter: @SeleniumHQ
• Lista de email: http://groups.google.com/group/selenium-
users
• Blog: http://seleniumhq.wordpress.com/
www.qualister.com.br
12. Instalando o Selenium IDE
• É um plugin para gravação e execução de testes pelo
Firefox
• O Selenium IDE instala SOMENTE no browser Firefox
• Sempre verifique a página http://seleniumhq.org/download
para encontrar a versão mais recente do Selenium IDE
• O instalador é um Addon do Firefox, porém pode ser
instalado separadamente baixando o arquivo .xpi e
instalando off-line
• Para versões beta do Firefox utilize o repositório do
Selenium IDE
http://xserve.openqa.org:8085/browse/IDE-EDITOR
www.qualister.com.br
13. Instalando o Selenium IDE
• Abra o Firefox e acesse o site
http://seleniumhq.org/download
• Clique sobre o link referente a versão atual do Selenium
IDE, como mostra a imagem abaixo
www.qualister.com.br
14. Instalando o Selenium IDE
• Uma mensagem será apresentada no canto superior
esquerdo do Firefox. Clique sobre o botão “Allow” (Permitir)
• O download será executado. Aguarde o término da
instalação do Addon
www.qualister.com.br
15. Instalando o Selenium IDE
• A tela de instalação do Addon do Selenium será
apresentada. Aguarde por 5 segundos e no botão “Install
Now” (Instalar Agora)
www.qualister.com.br
16. Instalando o Selenium IDE
• Agora no canto superior esquerdo mais uma mensagem
para reiniciar o Firefox e validar a instalação do Addon do
Selenium. Clique em “Restart Now” (Reiniciar)
www.qualister.com.br
17. Instalando o Selenium IDE
• Após o Firefox reiniciar vá até o menu Firefox/Web
Developer/Selenium IDE para abrir o Selenium IDE
www.qualister.com.br
20. Instalando o Firebug
• Firebug é uma ferramenta de desenvolvimento web onde
podemos editar, debug e monitorar CSS, HTML e Javascript
em uma página web
• Utilizaremos uma pequena funcionalidade do Firebug para
nos ajudar em alguma automações com o Selenium
www.qualister.com.br
21. Instalando o Firebug
• Acesse a página http://getfirebug.com
• Clique sobre o “botão vermelho” “Install Firebug”
• Você será direcionado para a página de download. Clique
sobre o item recomendado para iniciar a instalação
www.qualister.com.br
22. Instalando o Firebug
• Você será redirecionado para a ela de Add-ons do Firefox.
Clique no botão Add to Firefox para iniciar a instalação
www.qualister.com.br
23. Instalando o Firebug
• Uma mensagem aparecerá no canto superior esquerdo do
browser. Clique no botão “Allow” (Permitir)
• Aguarde o término do download
www.qualister.com.br
24. Instalando o Firebug
• A tela de instalação do Addon do Firebug será apresentada.
Aguarde por 5 segundos e no botão “Install Now” (Instalar
Agora)
www.qualister.com.br
25. Instalando o Firebug
• Agora no canto superior esquerdo mais uma mensagem
para reiniciar o Firefox e validar a instalação do Addon do
Firebug. Clique em “Restart Now” (Reiniciar)
www.qualister.com.br
26. Instalando o Firebug
• Após o Firefox reiniciar vá até o menu Firefox/Web
Developer/Firebug ou clique sobre o botão para habilitar
a barra do Firebug
www.qualister.com.br
27. Firebug - Inspector
• A maior funcionalidade do Firebug que utilizaremos para
nos ajudar na automação com o Selenium é chamado de
Inspector.
• Podemos ativar o inspector pelo botão
• Quando o ativamos passamos o mouse sobre qualquer
elemento dentro da página web para visualizar o
código-fonte do elemento que estiver apontado com a seta
do mouse
www.qualister.com.br
29. Estrutura do Selenium IDE
URL inicial
Barra de menu
Suíte de Teste
Estrutura e edição do
script
Informações gerais
www.qualister.com.br
30. Estrutura do Selenium IDE
• A URL Base é muito importante, pois quando iniciamos a
gravação do script um comando chamado open é
adicionado com o endereço da página, menos a base de
acesso.
• Com isso podemos trocar o endereço base e o script
continua funcionando
• A barra Fast Slow controla a velocidade do script. Procure
utiliza-la somente em caráter de visualização das ações dos
scripts. Aprenderemos como fazer esperar e não depender
dessa funcionalidade do Selenium IDE
www.qualister.com.br
31. Estrutura do Selenium IDE
• A barra de TestCase lista todos os scripts criados e é onde
podemos agrupar diversos scripts e salvar uma suíte de
teste
• O conjunto de Estruturação de Script é onde visualizamos
os comandos que estão sendo gravados, onde também
podemos editá-los
• O painel de Informações Gerais apresenta o log de
execução, referência de comandos entre outras
informações
www.qualister.com.br
32. Selenese, a linguagem do Selenium IDE
• Todos os scripts gravados e salvos como TestCase são
chamados de Selenese
• Selenese é uma “linguagem” própria do Selenium através
de comandos por palavras-chave (Keyword Driven)
• A visualização do código-fonte nada mais é do que uma
tabela HTML com a mesma visualização da tabela no
Selenium IDE
www.qualister.com.br
33. Selenese, a linguagem do Selenium IDE
• As Suítes de Teste podem ser salvas com um único script
ou com vários
• A estrutura do código-fonte é nada mais que o caminho
para cada script
www.qualister.com.br
35. Comandos Básicos
• Existem uma série de comandos no Selenium IDE já
prontos
• Visualizamos estes comandos no próprio Selenium IDE pela
combo Command
www.qualister.com.br
36. Comandos Básicos
• Existem basicamente três divisões de comandos: de
garantia ou verificação, de ação e gerais
• Os comandos de garantia e verificação podem ser
identificados como verify... ou assert...
Ex: assertTextPresent garante que um determinado texto
está contido na página
• Asserts: garante que uma certa informação está na página,
se não estiver falha e para a execução do script
• Verifys: verifica se uma certa informação está na página, se
não estiver marca o comando como erro e continua a
execução do script
www.qualister.com.br
37. Comandos Básicos
• Podemos chamar os comandos de ações os que mudam o
comportamento da página como click, keys, mouse, etc...
• Um ponto importante sobre o comando click é que
podemos visualizar o comando clickAndWait...
Isso indica que o clique mudou o comportamento da página
e o Selenium fará uma espera até a página ser carregada
• Todos os comandos que terminam com AndWait fazem
uma espera até que a página seja 100% carregada ou que
o tempo total de espera seja ultrapassado. Ele é
configurado pelo menu Options/Options/Default timeout value...
www.qualister.com.br
38. Comandos Básicos
• As ações gerais são qualquer outro comando específico
dentro do Selenium
• Sempre que precisarmos entender o que faz um comando
selecionamos ele através da combo Command e a aba
Reference é habilitada.
Poderemos ver o que o comando realmente faz sobre a
página ou sobre os elementos
www.qualister.com.br
40. Conceituação para Exercício 1
• Locators: são formas de identificar um elemento dentro da
página web. É um dos principais pontos que devemos
entender no Selenium
• Os locators podem ser do tipo:
– Id: localização pelo ID de um elemento
– Nome: localização pelo nome de um elemento
– Xpath: localização ou por funções ou por navegação
– Links: localização por um link na página
– DOM: localização através de propriedades via javascript
– CSS: localização por estilos
www.qualister.com.br
41. Conceituação para Exercício 1
• Localização por ID
• Encontra um elemento pelo atributo id
• No exemplo abaixo o único elemento que podemos interagir pelo id é o
form
• Ex: id=loginForm
www.qualister.com.br
42. Conceituação para Exercício 1
• Localização por Name
• Encontra um elemento pelo atributo name
• No exemplo abaixo podemos interagir com quatro elementos: campo de
login e senha, botão de login e botão de limpar
• Ex: id=username
• Observação: como temos dois elementos com o mesmo nome (continue)
o Selenium sempre pega o primeiro que encontra
www.qualister.com.br
43. Conceituação para Exercício 1
• Localização por xpath
• Encontra um elemento através da navegação entre os elementos
• No exemplo abaixo podemos localiza qualquer elemento por xpath e de
diversas formas....
• Ex: //input[3] irá encontrar o botão de login
//input[@name=“continue” and @type=“button” ] irá encontrar o
botão de limpar
www.qualister.com.br
44. Conceituação para Exercício 1
• Localização por link
• Encontra um elemento do link (href) de uma página
• No exemplo podemos encontrar os dois links existentes
• Ex: link=Continue localiza o link de Continue (“continue.html”)
link=Cancel localiza o link de Cancel (“cancel.html”)
www.qualister.com.br
45. Conceituação para Exercício 1
• Localização por DOM
• Encontra um elemento através de javascript
• No exemplo podemos encontrar qualquer elemento
• Ex: documents.forms[0].password localiza o campo de password
www.qualister.com.br
46. Conceituação para Exercício 1
• Localização por CSS
• Encontra um elemento através de um estilo CSS ou navegação na
página
• No exemplo podemos encontrar qualquer elemento
• Ex: css=input.required[type=“text”] localiza o elemento de usuário
css=input[name=“password"] localiza o elemento de senha
www.qualister.com.br
47. Qual a melhor estratégia?
• A melhor estratégia de localização está na ordem abaixo:
– id
– name
– Link
– CSS
– DOM
– Xpath
• Embora CSS esteja em quarto, o Selenium IDE pega a
grande parte dos elementos que não tenham ID ou name por
CSS
• Embora o Xpath esteja por último, existem funções que nos
ajudam a localizar mais facilmente um elemento
www.qualister.com.br
48. Conceituação para Exercício 2
• Comumente as páginas web utilizam funções em javascript
para executarem determinadas tarefas
• O Selenium tem diversos suportes para javascript, como os
comandos abaixo:
– addScript: adiciona um script javascript na página para execução do teste
– assertEval: garante a avaliação de um resultado positivo de um javascript
– assertNotEval: garante a avaliação de um resultado negativo de um javascript
– fireEvent: simula um evento em um determinado elemento
– runScript: executa um javascript
– removeScript: remove uma tag script
– storeEval: guarda o resultado de alguma ação via javascript
– verifyEval: verifica a avaliação de um resultado positivo de um javascript
– verifyNotEval: verifica a avaliação de um resultado negativo de um javascript
– waitForEval: espera por algum resultado positivo de um javascript
– waitForNotEval: espera por algum resultado negativo de um javascript
www.qualister.com.br
49. Conceituação para Exercício 3
• Alertas são mensagens informativas em javascript que
possuem apenas um botão de OK
• Confirmações são mensagens em javascript esperando uma
determinada ação de “sim/não” ou “ok/cancelar”
• Existe uma série de comandos para cada tipo de mensagem,
mas o que não devemos confundir é o tipo de cada um.
Todos os comandos de alertas possuem a palavra alert, e as
confirmações possuem a palavra confirmation
www.qualister.com.br
50. Conceituação para Exercício 3
• Alertas
– assertAlert: garante que um alerta apareceu validando pelo seu texto
– assertAlertNotPresent: garante que um alerta não apareça validando pelo seu
texto
– assertAlertPresent: garante que qualquer alerta apareceu, independente do
seu texto
– storeAlert: guarda a mensagem/texto de um alerta
– storeAlertPresent: guarda a mensagem/texto de um alerta presente na página
– verifyAlert: verfica que um alerta apareceu validando pelo seu texto
– verifyAlertPresent: verifica que um alerta apareça validando pelo seu texto
– verifyAlertNotPresent: verifica que um alerta não apareça validando pelo seu
texto
– waitForAlert: espera por um alerta pelo seu texto
– waitForAlertNotPresent: espera que um alerta não apareça mais na página
– waitForAlertPresent: espera por qualquer alerta na página
www.qualister.com.br
51. Conceituação para Exercício 3
• Os mesmos comandos do Alerta servem para as
Confirmações e tem as mesmas ações, porém com o nome
confirmation ou invés de alert
• O único comando adicionar é
chooseCancelOnNextConfirmation, que enviar um sinal
para que o Selenium ao invés de clicar sobre o botão OK,
clique sobre o botão Cancelar.
www.qualister.com.br
52. Conceituação para Exercício 4
• Popups no Selenium tem o mesmo tratamento de janelas.
• Vale salientar que o Selenium trabalha com janelas, mas não
entende a troca de abas, logo se existirem mais de uma
página ela deverá ser aberta em um novo browser
• O Selenium possui os seguintes comandos para interagir com
janelas
– close: simula o click no botão close da janela ou popup
– descelectPopup: tira o foco atual de uma popup
– selectPopup: coloca o foco em uma popup
– selectWindow: coloca o foco sobre uma janela ou popup
– waitForPopUp: espera por uma determinada popup
– windowFocus: coloca o foco sobre uma janela ou popup
www.qualister.com.br
53. Conceituação para Exercício 5
• Uma página web possui uma série de elementos HTML.
Alguns que podemos interagir diretamente como usuários da
página e outros não.
• Veremos alguns dos principais elementos de integração com
a página, como:
– Input: que pode ser:
• Caixa de texto/Senha
• Radion button
• Checkbox
– Combobox e ListBox
– ListBox
www.qualister.com.br
54. Conceituação para Exercício 6
• Expressões regulares são muito uteis no Selenium, onde
temos três tipos de patterns (modos de uso):
– Global
– Expressões Regulares
– Exatos
• Os Globais podem utilizar a maioria dos caracteres coringa de
expressões regulares e é util quando necessitamos interagir ou
validar certos elementos que tem nomes em comum.
• Utiliza o prefixo glob nos comandos
Ex: click | link=glob: Pesquisar Relatorio *
Neste exemplo ele encontra qualquer link com o que contenha o
texto “Pesquisar Relatorio” como “Pesquisar Relatorio de Cliente”,
Pesquisar “Relatório de Fornecedor,” etc..
www.qualister.com.br
55. Conceituação para Exercício 6
• As Expressões Regulares utilizam todos os recursos da
expressão regular para localizar qualquer tipo de informação na
página ou mesmo valida-las
• Utiliza o prefixo regexp nos comandos
Ex: clicar sobre um link que é uma data na página (21/01/2011)
click | link=regexp: [0-9]{2}/[0-9]{2}/[0-9]{4}
• Para saber mais de como utilizar os recursos de expressão regular
consulte
http://pt.wikipedia.org/wiki/Express%C3%A3o_regular
www.qualister.com.br
56. Conceituação para Exercício 6
• Os Exatos são utilizados quando interagimos com algum elemento
que tenha algum tipo de caracter especial utilizado por expressões
regulares ou globais
• Utiliza o prefixo exact nos comandos
• Ex: Validação do texto “(1 U.S. dollar) * 1 Brazil real = 0.57241”
assertTextPresent | exact:(1 U.S. dollar) * 1 Brazil real = 0.57241
www.qualister.com.br
57. Conceituação para Exercício 7
• Para efetuarmos esperas por eventos em Ajax deveremos
utilizar comandos que iniciem com waitFor
• Essa é a melhor forma de esperar por qualquer informação na
página. Por padrão todas as esperas no Selenium IDE tem o tempo
de 30 segundos. Depois disso um erro de timeout é apresentado
• O ideal em uma página com requisições Ajax é entender qual a
forma de retorno da requisição, seja apresentando um texto,
apresentando uma imagem, um campo, etc... A partir dai
pesquisamos pelo comando waitFor... mais apropriado
• Ex: para uma requisição Ajax que, ao seu término, apresenta o
botão de Remover e que tenha id=delete, podemos utilizar o
comando:
waitForElementPresent | id=delete
www.qualister.com.br
58. Conceituação para Exercício 7
• O timeout do Selenium IDE é configurado pelo menu
Option/Options...
• O campo “Default timeout value of recorded command in
miliseconds” quarda o tempo de espera em milisegundos,
onde 10s = 10.000 ms
www.qualister.com.br
59. Conceituação para Exercício 8
• Para encontrarmos certos tipos de elementos na página web
podemos utilizar algumas funções do xpath
• starts-with: útil quando um elemento tem um mesmo prefixo
Ex: elemento como caixa de texto: id=name1345
click | //input[starts-with(@id,’name’)]
• ends-with: útil quando um elemento termina com uma
mesma informação
Ex: elemento imagem: <img src=“icon_1234_small32x32.png />
click | //img[ends-with(@src,’small32x32.png’)]
www.qualister.com.br
60. Conceituação para Exercício 8
• contains: muito útil para encontrarmos elementos que
contenham certa informação.
Ex: lista de informações onde cada uma é uma div, e
queremos encontrar o valor “Fulano de Tal”:
<div[id=123]>Fulano de Tal</div>
• Comando para encontrar:
//div[contains(text(),’Fulano de Tal’)]
• Neste caso utilizamos também a função text(), para pegar o texto
de cada elemento (neste caso uma div), assim todos os elementos
são verificados e somente o que satisfaz a condição retorna
www.qualister.com.br
61. Conceituação para Exercício 9
• Em diversos momentos é necessário garantir uma certa
informação, que é nosso resultado esperado.
• Muitas vezes a página possui a mesma informação em locais
diferentes, mas precisamos garantir que a infomação está em
um determinado local
• É muito valido, neste cado, que coloquemos o caminho para
esta informação através de xpath
• Isso vai garantir que a informação que foi validada é a que
esperamos
• Veremos como esperar por uma informação em determinado
local no exercício
www.qualister.com.br
62. Conceituação para Exercício 10
• Este exercício utiliza a mesma lógica das esperas com Ajax
• A dica para este exercício é identificar como é o
comportamento de cada combo e utilizar os comandos para
esperar pelas informações certas
www.qualister.com.br
63. Quer saber mais?
Estes são apenas alguns slides do curso
de automação de testes com selenium
Para maiores informações e novas turmas, visite nosso site:
http://www.qualister.com.br/cursos
contato@qualister.com.br
www.qualister.com.br