You are on page 1of 53

Selenium Framework

Testes Automatizados em Aplicaes Web

Men

Definio Framework Selenium Selenese Referncia do Selenium Expandindo Selenium Concluso Duvidas? Autores Referncias

Definio

O que o Selenium?
Sute

de ferramentas de teste para sistemas web Abordagens de Automao

Diferentes

de Testes

Suporta

Vrios Browsers e S.Os

O que o Selenium?
Open Muito

Source Flexvel

Simula

o comportamento do Usurio.

Selenium Framework

Framework Selenium
A

Suite Selenium composta de:


Selenium Core: Selenium IDE: Selenium RC: Selenium Grid: Selenium WebDriver(Novo):

Selenium Core
Escrito

com JavaScript/DHTML, fazendo com que possa rodar direto no browser por baixo de toda funcionalidade do Selenium RC e IDE. uma linguagem de comando chamada Selenese (ser explicado depois)

Est

Usa

Selenium IDE
IDE

Completa. do Firefox.

Extenso Grava,

Edita e Reproduz as interaes feitas no browser. Necessita conhecer nenhuma Linguagem de Programao

No

Selenium IDE
Scripts

gravados em formato selenese automaticamente cdigo para varias linguagens e frameworks de testes para aprender sobre a API do Selenium

Gera

Bom

Selenium IDE

Selenium RC

Segue uma Arquitetura Cliente Servidor Servidor escrito em Java (portabilidade) Flexibilidade de browsers Algumas das tarefas atribudas ao Servidor so:

Receber requisies HTTP Lanar e fechar browsers Interpretar comandos Selenese Proxy HTTP

Selenium RC
Os

Clientes so Bibliotecas (Drivers)

Atuam

como Interfaces entre a linguagem de programao e o Servidor

Possibilita

teste mais robustos

Flexibilidade

de Linguagens de Programao

Selenium Grid
Escrito Testes

em Java Paralelos em Mltiplas mquinas

Reduo de tempo ( Testes Paralelos) Mltiplas combinaes de Ambientes (Browsers e S.Os)

Selenium Grid
Roda

em Nuvem ou em Clusters de Servidores Servidor Hub distribui o teste para vrias maquinas rodando Selenium RC Testes podem ser rodados em servidores nas Nuvens.

Cluster:

Nuvem:

Selenium WebDriver
Mais

nova ferramenta da Suite Selenium com a API WebDriver

Integrao Selenium 2.0?

2.0!

Selenium WebDriver

Selenium WebDriver

Selenium 1.0 tinha dificuldades: 1. eventos de mouse teclado nativos 2. Same origin policy XSS/HTPP(S) 3. Pop-ups, dialogs(Basic Auth;Certificados auto-assinados; dowload/upload de arquivos)

Selenium WebDriver

Webdriver rpido e limpo framework para automao de teste de browser, criado por Simon Stewart WebDriver suportava poucos browsers(IE, Firefox) No suportava Testes Paralelos

Selenium WebDriver
Selenium

2.0 supera as dificuldades da versao anterior, tendo controle do Browser unido ao Selenium ganha:

WebDriver

Testes em Paralelo (Selenium Grid) Multiplicidade de Browsers

Selenese

Selenese
Linguagem

de comandos para elaborao de Scripts de Teste dentro de tabelas HTML Presente no Selenium Core, que includo pelo Selenium IDE e RC comando representa uma linha desta tabela, fazendo referencia a uma funo da biblioteca do Selenium Core

Est

Cada

Selenese
Apresenta

o formato de tabela abaixo:


Alvo 1
Alvo 2 Alvo n

Comando 1
Comando 2 Comando n

Valor 1
Valor 2 Valor n

Selenese
Alvos

e valores so parametros a serem usados em alguma funo do Core de Caso de Teste com Selenese
/mypage nameField submitButton name John Smith True John Smith

Exemplo
MyTest open type click verifyText

Referncia do Selenium

Reviso e Observaes Importantes

Estrutura na IDE existem 3 campos comando, alvo e valor, onde:


Comando: o local onde se digita a instruo a ser executada; Alvo: o primeiro parmetro da funo a ser executada. As funes do selenium utilizam este parmetro para informar qual o id/name a ser buscado; Valor: o campo que tambm utilizado para identificar, onde a forma de identificao feita pelo valor, o campo contm um valor.

Reviso e Observaes Importantes

Diferena entre assert e verify: Assert:


Verify:

Pra a execuo quando ocorre um erro; Mais utilizado para verificar se est na pgina correta Loga o erro, caso exista, sem parar a execuo do teste; Mais para analisar os itens da pgina.

Reviso e Observaes Importantes

Comando waitFor :
Toda instruo que tiver o waitFor fica esperando at que uma outra instruo retorne um valor(true or false) para que a mesma saia dessa espera.

Reviso Prtica e Dicas

Procurando por checkbox e radio Button especficos

Os checkboxes e os radiosButtons nem sempre possuem um id; No entanto, sempre possuem um name igual aos outros; Para selecionar, precisa-se de um parmetro diferenciador, que nesse caso existe o value do mesmo, logo necessrio selecionar utilizando 2 tipos de parmetros ; Dica: utilizar o xpath, pois ele consegue buscar pelo name e o value ao mesmo tempo, exemplo: //input[@name='situacao' and @value='2'] Ele busca por um input que possua um nome situao e o valor especfico igual a 2; Logo possvel identificar e clicar, por exemplo, em um radio ou checkbox.

Estrutura de pastas

Pasta config

Nesta pasta devemos colocar todos os arquivos de configurao; Dica: deve ser criado um arquivo com as configuraes mais utilizadas: Selenium.base: a primeira url em que o teste vai acessar; Dessa forma, deve ser configurado no arquivo de configurao e no nos arquivos de teste; Exemplo: <link rel="selenium.base" href="https://trunk.voxtecnologia.com.br" />

Elementos identificadores

So os elementos que indicam qual o campo(id ou name) deve ser aplicada a ao, onde pode-se ter:

Identifier = [id ou nome] id = [id] name = [nome] dom = [expresso javascript] xpath = [expresso a ser aplicada] link = [nome da ncora] css = [regra de css2 ou css3] ui = [regra especfica string] UI-Elements

Identificadores: Identifier

Identifier (Identificador):

Esse elemento faz uma busca primeiro pelo elemento id, onde caso no seja possvel encontrar, faz a devida busca pelo elemento name.
Ex:

identifier = bola Procura primeiro pelo id=bola, caso no encontre tal id o selenium procura pelo name=bola.

Identificadores: Id/Name
Id:

Elementos que procuram pelos respectivos id: o Selenium s busca pelo id;

Name:

Elementos que procuram pelos respectivos name: o Selenium s busca pelo name do item requisitado.

Identificadores: Dom
Dom

Este elemento possibilita a utilizao de javascript para se identificar um elemento na pgina; Possibilidade em capturar um elemento; Possibilidade em executar funes javascript. Ex: dom=document.getElementById('login') Procura na pagina um elemento que tenha o id login.

Identificadores: XPath

XPath

Esse elemento possibilita localizar de acordo com expresses xpath Ex: xpath=//input[@id='login'] Procura na pgina um elemento que tenha o id login. Ex: xpath=//input[@id='login' and @class='campo-texto'] Procura na pgina um elemento com o id login e a classe campo-texto.

Identificadores: Css

Css

Esse elemento torna possvel localizar um elemento utilizando regras do tipo css, onde pode ser css2 ou css3; Boa dica: utilizar das propriedades ^=(inicia com), $=(termina com) e *=(possui em) como medida de busca por um elemento. Ex css: css=a[title=${sistema}]

Procura na pgina pelo elemento a onde possuia o titulo gravado na varivel sistema.

Expandindo o Selenium

Estrutura de Codificao
Quando

no possvel automatizar com a IDE do selenium, o que fazer?


Utilizar o recurso de incluso de arquivos javascript, onde para acessar no selenium necessita respeitar uma estrutura bsica de chamada do objeto: Selenium.prototype.do[NomeDoMetodo]

Selenium.prototype.do[NomeDoM etodo]

Estrutura que cria uma nomeclatura para o Selenium IDE. possvel chamar de duas formas:

nomeDoMetodo: no espera por uma instruo ter um resultado para continuar a execuo do caso de teste. nomeDoMetodoAndWait : espera por uma instruo ter um resultado para continuar a execuo do caso de teste.

Selenium.prototype.do[NomeDoM etodo]

* Mtodo que realiza o check ou o uncheck do locator * @param locator string * @param value bool */ Selenium.prototype.doCheckByValue = function(locator, value){ value == 'true' ? value = 'checked' : value = ''; this.page().findElement(locator).checked = value; }

Selenium.prototype.do[NomeDoM etodo]

Observaes importantes

Na

estrutura do Selenium possvel informar at dois parmetros; Quando criado o mtodo necessrio colocar o do antes do nome do mesmo, onde o doTeste na IDE do Selenium o, mtodo a ser chamado o teste.

Selenium.prototype.do[NomeDoM etodo]

Passo-a-passo Crio

um arquivo javascript: o UserExtensions.js; Adiciono os mtodos, seguindo o padro: Selenium.prototype.do[NomeDoMeto do], conforme explicaes anteriores; Adiciono no Selenium IDE, conforma imagem seguinte

Selenium.prototype.do[NomeDoM etodo]

Mtodos e Objetos auxiliares

Para se trabalhar com o Selenium necessrio utilizar arquivos javascript, pois existem casos que o prprio Selenium no consegue automatizar sem o auxlio de javascript; Nesse contexto, recomendado que se utilize uma escrita de cdigo fora do padro do Selenium; Dessa maneira, os mtodos podem ser chamados sem a limitao de tamanho e os mesmos no possuem a necessidade de serem chamados na IDE do Selenium.

Como Sobrescrever mtodos da API do Selenium IDE?


Simples:

API do Selenium IDE est disponvel: http://code.google.com/p/selenium/sour ce/search?q=dotype&origq=dotype&btn G=Search+Trunk (svn selenium); Basta no arquivo js UserExtensions.js colocar o mtodo sobrescrevendo o da API; O mtodo a ser chamado o seu!

Como Sobrescrever mtodos da API do Selenium IDE?

/** * Mtodo que sobrescreve o comando type do Selenium, executando somente * se o valor no for vazio ou nulo */ Selenium.prototype.doType = function(locator, value) {
if(value == '' || value == null) return ; if (this.browserbot.controlKeyDown || this.browserbot.altKeyDown || this.browserbot.metaKeyDown) { throw new SeleniumError("type not supported immediately after call to controlKeyDown() or altKeyDown() or metaKeyDown()"); } // TODO fail if it can't be typed into. var element = this.browserbot.findElement(locator); if (this.browserbot.shiftKeyDown) { value = new String(value).toUpperCase(); } this.browserbot.replaceText(element, value);

Concluso

Duvidas?

Autores
Andr

Fernandes de Caldas Lysianne Couto Andrade Wellington Narciso

Referncias

http://seleniumhq.org/ http://en.wikipedia.org/wiki/Selenium_(softwa re) http://wiki.openqa.org/display/SIDE/Home http://svn.openqa.org/fisheye/browse/~raw,r =2184/selenium/website/src/main/webapp/in stalling.html http://stackoverflow.com/questions/3380682/ what-exactly-is-selenese-html

Referncias

http://release.seleniumhq.org/seleniumcore/1.0.1/reference.html http://wiki.openqa.org/display/SEL/Contribute d+User-Extensions http://colab.mpdl.mpg.de/mediawiki/images /1/16/Pubman_and_Selenium_tests.ppt http://bharathmarrivada.blogspot.com.br/2011/02/selenium 10-vs-selenium20.html

You might also like