• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
98796699 selenium-framework
 

98796699 selenium-framework

on

  • 1,619 views

 

Statistics

Views

Total Views
1,619
Views on SlideShare
1,619
Embed Views
0

Actions

Likes
1
Downloads
24
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    98796699 selenium-framework 98796699 selenium-framework Presentation Transcript

    • SeleniumFrameworkTestes Automatizados emAplicaçõ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ítede 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. Usauma 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 Selenium2.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 SeleneseMyTestopen /mypagetype nameField John Smithclick submitButton TrueverifyText name John Smith
    • Referência do Selenium
    • Revisão e ObservaçõesImportantes 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çõesImportantes 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çõesImportantes • 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 = bola Procura 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[NomeDoMeto do], 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? Simples: API do Selenium IDE está disponível: 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 método sobrescrevendo o da API; O método a ser chamado é o seu!
    • 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 cant 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
    • Referências 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
    • Referências http://release.seleniumhq.org/selenium- core/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://bharath- marrivada.blogspot.com.br/2011/02/selenium 10-vs-selenium20.html