Professional Documents
Culture Documents
Men
Definio Framework Selenium Selenese Referncia do Selenium Expandindo Selenium Concluso Duvidas? Autores Referncias
Definio
O que o Selenium?
Sute
Diferentes
de Testes
Suporta
O que o Selenium?
Open Muito
Source Flexvel
Simula
o comportamento do Usurio.
Selenium Framework
Framework Selenium
A
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
Atuam
Possibilita
Flexibilidade
de Linguagens de Programao
Selenium Grid
Escrito Testes
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
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
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
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
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.
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.
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.
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
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]
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.
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!
/** * 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
Referncias
Referncias