selenium framework

Post on 24-Jul-2015

404 Views

Category:

Documents

24 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Selenium Framework Testes Automatizados em Aplicações Web

Menú Definição Framework Selenium Selenese Referência do Selenium Expandindo Selenium Conclusão Duvidas? Autores Referências

Definição

O que é o Selenium? Suíte de ferramentas de teste para

sistemas web

Diferentes Abordagens de Automação de Testes

Suporta Vários Browsers e S.Os

O que é o Selenium? Open Source

Muito Flexível

Simula o comportamento do Usuário.

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

Está por baixo de toda funcionalidade do Selenium RC e IDE.

Usa uma linguagem de comando chamada Selenese (será explicado depois)

Selenium IDE IDE Completa.

Extensão do Firefox.

Grava, Edita e Reproduz as interações feitas no browser.

Não Necessita conhecer nenhuma Linguagem de Programação

Selenium IDE Scripts gravados em formato selenese

automaticamente

Gera código para varias linguagens e frameworks de testes

Bom para aprender sobre a API do Selenium

Selenium IDE

Selenium RC Segue uma Arquitetura Cliente – Servidor

Servidor escrito em Java (portabilidade)

Flexibilidade de browsers

Algumas das tarefas atribuídas ao Servidor são: Receber requisições HTTP Lançar e fechar browsers Interpretar comandos Selenese Proxy HTTP

Selenium RC Os Clientes são Bibliotecas (Drivers)

Atuam como Interfaces entre a linguagem de programação e o Servidor

Possibilita teste mais robustos

Flexibilidade de Linguagens de Programação

Selenium Grid Escrito em Java

Testes Paralelos em Múltiplas máquinas Redução de tempo ( Testes Paralelos) Múltiplas combinações de Ambientes

(Browsers e S.Os)

Selenium Grid Roda em Nuvem ou em Clusters de

Servidores

Cluster: Servidor Hub distribui o teste para várias maquinas rodando Selenium RC

Nuvem: Testes podem ser rodados em servidores nas Nuvens.

Selenium WebDriver Mais nova ferramenta da Suite Selenium

Integração com a API WebDriver

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 é rápido e limpo framework para

automação de teste de browser, criado por Simon Stewart

WebDriver suportava poucos browsers(IE, Firefox)

Não suportava Testes Paralelos

Selenium WebDriver Selenium 2.0 supera as dificuldades da

versao anterior, tendo controle do Browser

WebDriver unido ao Selenium ganha: Testes em Paralelo (Selenium Grid) Multiplicidade de Browsers

Selenese

Selenese Linguagem de comandos para elaboração

de Scripts de Teste dentro de tabelas HTML

Está Presente no Selenium Core, que é incluído pelo Selenium IDE e RC

Cada comando representa uma linha desta tabela, fazendo referencia a uma função da biblioteca do Selenium Core

Selenese Apresenta o formato de tabela abaixo:

Comando 1 Alvo 1 Valor 1

Comando 2 Alvo 2 Valor 2

Comando n Alvo n Valor n

Selenese Alvos e valores são parametros a serem

usados em alguma função do Core

Exemplo de Caso de Teste com SeleneseMyTest

open /mypage  

type nameField John Smith

click submitButton True

verifyText name John Smith

Referência do Selenium

Revisão e Observações Importantes

Estrutura na IDE existem 3 campos comando, alvo e valor, onde: Comando: é o local onde se digita a instrução a ser

executada; Alvo: é o primeiro parâmetro da função a ser

executada. As funções do selenium utilizam este parâmetro para informar qual é o id/name a ser buscado;

Valor: é o campo que também é utilizado para identificar, onde a forma de identificação é feita pelo valor, “o campo contém um valor”.

Revisão e Observações Importantes

Diferença entre assert e verify: Assert:

Pára a execução quando ocorre um erro; Mais utilizado para verificar se está na página

correta Verify:

Loga o erro, caso exista, sem parar a execução do teste;

Mais para analisar os itens da página.

Revisão e Observações Importantes

• Comando waitFor :

Toda instrução que tiver o waitFor fica esperando até que uma outra instrução retorne um valor(true or false) para que a mesma saia dessa espera.

Revisão Prática e Dicas Procurando por checkbox e radio Button específicos

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 parâmetro diferenciador, que

nesse caso existe o value do mesmo, logo é necessário selecionar utilizando 2 tipos de parâmetros ;

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 situação e o valor

específico igual a 2; Logo é possível identificar e clicar, por exemplo, em um radio ou

checkbox.  

Estrutura de pastas Pasta config

Nesta pasta devemos colocar todos os arquivos de configuração;

Dica: deve ser criado um arquivo com as configurações mais utilizadas:

Selenium.base: é a primeira url em que o teste vai acessar;

Dessa forma, deve ser configurado no arquivo de configuração e não nos arquivos de teste;

Exemplo: <link rel="selenium.base"

href="https://trunk.voxtecnologia.com.br" />

Elementos identificadores São os elementos que indicam qual o campo(id

ou name) deve ser aplicada a ação, onde pode-se ter: Identifier = [id ou nome] id = [id] name = [nome] dom = [expressão javascript] xpath = [expressão a ser aplicada] link = [nome da âncora] css = [regra de css2 ou css3] ui = [regra específica string] UI-Elements

Identificadores: Identifier Identifier (Identificador):

Esse elemento faz uma busca primeiro pelo elemento id, onde caso não seja possível encontrar, faz a devida busca pelo elemento name.Ex: identifier = bolaProcura primeiro pelo id=”bola”,

caso não 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 utilização de javascript para se identificar um elemento na página;

Possibilidade em capturar um elemento; Possibilidade em executar funções 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 expressões xpath

Ex: xpath=//input[@id='login']Procura na página um elemento que tenha o id login.

Ex: xpath=//input[@id='login' and @class='campo-texto']Procura na página um elemento com o id login e a classe campo-texto.

Identificadores: Css Css

Esse elemento torna possível 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 página pelo elemento a

onde possuia o titulo gravado na variável sistema.

Expandindo o Selenium

Estrutura de Codificação Quando não é possível automatizar com

a IDE do selenium, o que fazer? Utilizar o recurso de inclusão de arquivos

javascript, onde para acessar no selenium necessita respeitar uma estrutura básica de chamada do objeto:

Selenium.prototype.do[NomeDoMetodo]

Selenium.prototype.do[NomeDoMetodo]• Estrutura que cria uma nomeclatura para o Selenium

IDE. É possível chamar de duas formas:

nomeDoMetodo: não espera por uma instrução ter um resultado para continuar a execução do caso de teste.

nomeDoMetodoAndWait : espera por uma instrução ter um resultado para continuar a execução do caso de teste.

Selenium.prototype.do[NomeDoMetodo] * Método 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[NomeDoMetodo]

Observações importantes

Na estrutura do Selenium é possível informar até dois parâmetros;

Quando é criado o método é necessário colocar o “do” antes do nome do mesmo, onde o doTeste na IDE do Selenium o, método a ser chamado é o teste.

Selenium.prototype.do[NomeDoMetodo]

Passo-a-passo

Crio um arquivo javascript: o UserExtensions.js;

Adiciono os métodos, seguindo o padrão: Selenium.prototype.do[NomeDoMetodo], conforme explicações anteriores;

Adiciono no Selenium IDE, conforma imagem seguinte

Selenium.prototype.do[NomeDoMetodo]

Métodos e Objetos auxiliares

Para se trabalhar com o Selenium é necessário utilizar arquivos javascript, pois existem casos que o próprio Selenium não consegue automatizar sem o auxílio de javascript;

Nesse contexto, é recomendado que se utilize uma escrita de código fora do padrão do Selenium;

Dessa maneira, os métodos podem ser chamados sem a limitação de tamanho e os mesmos não possuem a necessidade de serem chamados na IDE do Selenium.

Como Sobrescrever métodos da API do Selenium IDE?

/** * Método que sobrescreve o comando type do Selenium, executando

somente * se o valor não 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); };

Conclusão

Duvidas?

Autores André Fernandes de Caldas Lysianne Couto Andrade Wellington Narciso

top related