SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
TestRock!
Ruby para testers III
Selenium
 Objetivo?
 Apresentar os elementos básicos do Selenium com Ruby
 Para que?
 Para iniciarmos a montagem dos nossos testes automáticos
 Como?
 Fazendo um panorama dos conhecimentos elementares de Selenium
 Passos
 Entender e executar os exemplos de código
Conceito!
2
Prática!
3
 Selenium WebDriver é um API para teste de software
 Seja driver = Selenium::WebDriver.for :chrome
 Navegar
 driver.get "http://www.google.com"
 driver.navigate.to "http://www.google.com"
 .get = .navigate.to
 driver.navigate.forward #usar ambos com cuidado
 driver.navigate.back
 Waits
 Implicity wait: aguarda qualquer elemento por um tempo especificado
driver.manage.timeouts.implicit_wait = 10 #segundos
 Explicity wait: aguarda até que uma certa condição seja atingida. Porém
Ruby não tem as condições pre-definidas. É preciso implementá-las
você mesmo
//Exemplo de código em Java
WebElement myElement = (new WebDriverWait(driver, 10))
.until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
Prática!
4
 .find_element(s) #encontra elementos na tela
 :id
<input id="gs_htif0“/> → driver.find_element(:id => “gs_htif0")
 :class_name
 :tag_name
<iframe src="..."></iframe> → driver.find_element(:tag_name, "iframe")
 :name
 :link_text ou :link #acha pelo texto visível
<a href="http://www.google.com/search?q=cheese">cheese</a>> →
driver.find_element(:link_text, "cheese")
 :partial_link_text #acha por parte do texto visível
<a href="http://www.google.com/search?q=cheese">search for cheese</a>> →
driver.find_element(:partial_link_text, "cheese")
Prática!
5
 .find_element(s) #encontra elementos na tela
 :xpath
<input id="gs_htif0“/> → driver.find_elements(:xpath, “.//*[@id='gs_htif0']")
 :css
<div class="intro"><p>Meu nome é Paulo<span id="Lastname">Silva.</span></p>
→driver.find_element(:css, “.intro, #LastName")
 Mais métodos
 .send_keys #imputa uma string na caixa de texto
 .text #retorna o texto visível do objeto
 .click #clica em um objeto
 .toggle #seleciona um radiobutton
Prática!
6
 Mais métodos
 objeto Select
#Desmarca os itens selecionados e seleciona o item Pedro
select = Selenium::WebDriver::Support::Select.new(driver.find_element(:tag_name,
"select"))
select.deselect_all()
select.select_by(:text, “Pedro")
 .submit #ação de enviar. Pode ser chamado de um elemento form
 .switch_to.window("windowName") #move para a janela especificada.
Para saber o nome da janela, olhe no java script ou link que foi usado
para abri-la
<a href="somewhere.html" target="windowName">Click here to open a new window</a>
 .window_handles
#usa um "window handle"
driver.window_handles.each do |handle|
driver.switch_to.window handle
end
 driver.switch_to.frame "frameid" #muda para o frame de id especificado
Prática!
7
 Mais métodos
 Popups
 driver.switch_to.alert #com o objeto em mãos é possível aceitar, inserir usuário e senha,
cancelar entre outras ações
 Alterando as configurações do browser
 driver = Selenium::WebDriver.for :firefox, :profile => profile
 profile = Selenium::WebDriver::Firefox::Profile.new
 profile['network.proxy.http'] = 'localhost'
 profile['network.proxy.http_port'] = 9090
 #ver mais em http://kb.mozillazine.org/About:config_entries
 ActionBuilder #operações complexas
 driver.action.drag_and_drop(element, target).perform
 driver.action.click_and_hold(element).perform
 driver.action.double_click(element).perform
Prática!
8
 Checkpoint
 driver.find_elements(:id => “gs_htif0").length > 0 #verifica se o elemento
existe. Retorna 0 se não existir
 driver.find_element(:id => “id_do_elemento").text == “Enviado” #verifica
um texto na tela
 Canal TestRock! - https://www.youtube.com/channel/UCaM9f-
dK58sezfVmNIoAi6g
 Facebook - https://www.facebook.com/TestRockChannel/
 Material - https://pt.slideshare.net/TestRockChannel
 Código -
https://www.dropbox.com/sh/ogqpdjsuub5wukg/AAD2rTh9iGpQTRWMcGW
2AOtHa?dl=0
Material!
9

Mais conteúdo relacionado

Mais procurados

Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaHenrique Limas
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonPaula Grangeiro
 
Protractor - Testando aplicações AngularJS end to end
Protractor - Testando aplicações AngularJS end to endProtractor - Testando aplicações AngularJS end to end
Protractor - Testando aplicações AngularJS end to endDaniel Amorim
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de djangoFilipe Ximenes
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasLucas Caton
 
Desenvolvendo com Angular CLI
Desenvolvendo com Angular CLIDesenvolvendo com Angular CLI
Desenvolvendo com Angular CLIVanessa Me Tonini
 
Protractor - Testando aplicações AngularJS end to end
Protractor - Testando aplicações AngularJS end to endProtractor - Testando aplicações AngularJS end to end
Protractor - Testando aplicações AngularJS end to endDaniel Amorim
 
Jquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaJquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaTeles Maciel
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e HudsonRodrigo Branas
 
React + Flux (Alt)
React + Flux (Alt)React + Flux (Alt)
React + Flux (Alt)Cezar Luiz
 
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe ScannerLoiane Groner
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyFausto Siqueira
 
Testes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkTestes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkYuri Adams
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot frameworkClaudenir Freitas
 

Mais procurados (20)

Testando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o KarmaTestando uma aplicação AngularJS utilizando o Karma
Testando uma aplicação AngularJS utilizando o Karma
 
React Native na globo.com
React Native na globo.comReact Native na globo.com
React Native na globo.com
 
Django - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em pythonDjango - A sua cápsula de soluções web em python
Django - A sua cápsula de soluções web em python
 
Protractor - Testando aplicações AngularJS end to end
Protractor - Testando aplicações AngularJS end to endProtractor - Testando aplicações AngularJS end to end
Protractor - Testando aplicações AngularJS end to end
 
Boas práticas de django
Boas práticas de djangoBoas práticas de django
Boas práticas de django
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Por que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticasPor que testar é importante e algumas boas práticas
Por que testar é importante e algumas boas práticas
 
Desenvolvendo com Angular CLI
Desenvolvendo com Angular CLIDesenvolvendo com Angular CLI
Desenvolvendo com Angular CLI
 
Protractor - Testando aplicações AngularJS end to end
Protractor - Testando aplicações AngularJS end to endProtractor - Testando aplicações AngularJS end to end
Protractor - Testando aplicações AngularJS end to end
 
Groovy grails
Groovy grailsGroovy grails
Groovy grails
 
Introdução ao vraptor
Introdução ao vraptorIntrodução ao vraptor
Introdução ao vraptor
 
Jquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação práticaJquery - Apresentação e aplicação prática
Jquery - Apresentação e aplicação prática
 
Maven 3, Sonar e Hudson
Maven 3, Sonar e HudsonMaven 3, Sonar e Hudson
Maven 3, Sonar e Hudson
 
Java Web Fácil com VRaptor
Java Web Fácil com VRaptorJava Web Fácil com VRaptor
Java Web Fácil com VRaptor
 
React + Flux (Alt)
React + Flux (Alt)React + Flux (Alt)
React + Flux (Alt)
 
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
[Curso Java Basico] Aula 12: Lendo dados do teclado usando a classe Scanner
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
 
Testes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine FrameworkTestes Unitários com JavaScript utilizando Jasmine Framework
Testes Unitários com JavaScript utilizando Jasmine Framework
 
Selenium ide
Selenium ideSelenium ide
Selenium ide
 
Automatizando seus testes com robot framework
Automatizando seus testes com robot frameworkAutomatizando seus testes com robot framework
Automatizando seus testes com robot framework
 

Semelhante a Selenium Ruby Introdução

Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Seleniumrodrigogouveia
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-frameworkAndré Caldas
 
Selenium
SeleniumSelenium
Seleniumfatec
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 
Trabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial IiTrabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial IiMateus Ramos Pereira
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium Mayron Cachina
 
Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfverickrodrigo23
 
Tutorial de Uso do R Selenium
Tutorial de Uso do R Selenium Tutorial de Uso do R Selenium
Tutorial de Uso do R Selenium Daniel Marcelino
 
Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5Gilberto Holms
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Eduardo Mendes
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCZarathon Maia
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Rafael Benevides
 

Semelhante a Selenium Ruby Introdução (20)

Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Selenium
 
98796699 selenium-framework
98796699 selenium-framework98796699 selenium-framework
98796699 selenium-framework
 
Selenium
SeleniumSelenium
Selenium
 
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
Trabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial IiTrabalho ProgramaçãO Comercial Ii
Trabalho ProgramaçãO Comercial Ii
 
cypress.pdf
cypress.pdfcypress.pdf
cypress.pdf
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
 
Apostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfvApostila_JavaScript_pela_axademia_ardkgfv
Apostila_JavaScript_pela_axademia_ardkgfv
 
JADE+JENA
JADE+JENAJADE+JENA
JADE+JENA
 
Selenium - WebDriver
Selenium - WebDriverSelenium - WebDriver
Selenium - WebDriver
 
Tutorial de Uso do R Selenium
Tutorial de Uso do R Selenium Tutorial de Uso do R Selenium
Tutorial de Uso do R Selenium
 
Conhecendo o Spring
Conhecendo o SpringConhecendo o Spring
Conhecendo o Spring
 
servlet-introducao
servlet-introducaoservlet-introducao
servlet-introducao
 
Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5Resumo Anotacoes Certificacao SCWCD 5
Resumo Anotacoes Certificacao SCWCD 5
 
Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1Java Web 3 - Servlets e JSP 1
Java Web 3 - Servlets e JSP 1
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
Apresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVCApresentação Java Web Si Ufc Quixadá - MVC
Apresentação Java Web Si Ufc Quixadá - MVC
 
Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007Apostilava Java EE 5 - 2007
Apostilava Java EE 5 - 2007
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 

Mais de TestRock!

Ciclo de vida de testes implementado
Ciclo de vida de testes implementadoCiclo de vida de testes implementado
Ciclo de vida de testes implementadoTestRock!
 
Ruby para testers II - Introdução
Ruby para testers II - IntroduçãoRuby para testers II - Introdução
Ruby para testers II - IntroduçãoTestRock!
 
Juntando as idéias I
Juntando as idéias IJuntando as idéias I
Juntando as idéias ITestRock!
 
Strategy x Factory em testes
Strategy x Factory em testesStrategy x Factory em testes
Strategy x Factory em testesTestRock!
 
Id dinâmico com objeto âncora no selenium
Id dinâmico com objeto âncora no seleniumId dinâmico com objeto âncora no selenium
Id dinâmico com objeto âncora no seleniumTestRock!
 
Design Factory em testes
Design Factory em testesDesign Factory em testes
Design Factory em testesTestRock!
 
Strategy em testes
Strategy em testesStrategy em testes
Strategy em testesTestRock!
 
Componentização no selenium
Componentização no seleniumComponentização no selenium
Componentização no seleniumTestRock!
 
Herança de teste no selenium
Herança de teste no seleniumHerança de teste no selenium
Herança de teste no seleniumTestRock!
 
Object repository no selenium
Object repository no seleniumObject repository no selenium
Object repository no seleniumTestRock!
 
Design builder em testes
Design builder em testesDesign builder em testes
Design builder em testesTestRock!
 

Mais de TestRock! (11)

Ciclo de vida de testes implementado
Ciclo de vida de testes implementadoCiclo de vida de testes implementado
Ciclo de vida de testes implementado
 
Ruby para testers II - Introdução
Ruby para testers II - IntroduçãoRuby para testers II - Introdução
Ruby para testers II - Introdução
 
Juntando as idéias I
Juntando as idéias IJuntando as idéias I
Juntando as idéias I
 
Strategy x Factory em testes
Strategy x Factory em testesStrategy x Factory em testes
Strategy x Factory em testes
 
Id dinâmico com objeto âncora no selenium
Id dinâmico com objeto âncora no seleniumId dinâmico com objeto âncora no selenium
Id dinâmico com objeto âncora no selenium
 
Design Factory em testes
Design Factory em testesDesign Factory em testes
Design Factory em testes
 
Strategy em testes
Strategy em testesStrategy em testes
Strategy em testes
 
Componentização no selenium
Componentização no seleniumComponentização no selenium
Componentização no selenium
 
Herança de teste no selenium
Herança de teste no seleniumHerança de teste no selenium
Herança de teste no selenium
 
Object repository no selenium
Object repository no seleniumObject repository no selenium
Object repository no selenium
 
Design builder em testes
Design builder em testesDesign builder em testes
Design builder em testes
 

Selenium Ruby Introdução

  • 2.  Objetivo?  Apresentar os elementos básicos do Selenium com Ruby  Para que?  Para iniciarmos a montagem dos nossos testes automáticos  Como?  Fazendo um panorama dos conhecimentos elementares de Selenium  Passos  Entender e executar os exemplos de código Conceito! 2
  • 3. Prática! 3  Selenium WebDriver é um API para teste de software  Seja driver = Selenium::WebDriver.for :chrome  Navegar  driver.get "http://www.google.com"  driver.navigate.to "http://www.google.com"  .get = .navigate.to  driver.navigate.forward #usar ambos com cuidado  driver.navigate.back  Waits  Implicity wait: aguarda qualquer elemento por um tempo especificado driver.manage.timeouts.implicit_wait = 10 #segundos  Explicity wait: aguarda até que uma certa condição seja atingida. Porém Ruby não tem as condições pre-definidas. É preciso implementá-las você mesmo //Exemplo de código em Java WebElement myElement = (new WebDriverWait(driver, 10)) .until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));
  • 4. Prática! 4  .find_element(s) #encontra elementos na tela  :id <input id="gs_htif0“/> → driver.find_element(:id => “gs_htif0")  :class_name  :tag_name <iframe src="..."></iframe> → driver.find_element(:tag_name, "iframe")  :name  :link_text ou :link #acha pelo texto visível <a href="http://www.google.com/search?q=cheese">cheese</a>> → driver.find_element(:link_text, "cheese")  :partial_link_text #acha por parte do texto visível <a href="http://www.google.com/search?q=cheese">search for cheese</a>> → driver.find_element(:partial_link_text, "cheese")
  • 5. Prática! 5  .find_element(s) #encontra elementos na tela  :xpath <input id="gs_htif0“/> → driver.find_elements(:xpath, “.//*[@id='gs_htif0']")  :css <div class="intro"><p>Meu nome é Paulo<span id="Lastname">Silva.</span></p> →driver.find_element(:css, “.intro, #LastName")  Mais métodos  .send_keys #imputa uma string na caixa de texto  .text #retorna o texto visível do objeto  .click #clica em um objeto  .toggle #seleciona um radiobutton
  • 6. Prática! 6  Mais métodos  objeto Select #Desmarca os itens selecionados e seleciona o item Pedro select = Selenium::WebDriver::Support::Select.new(driver.find_element(:tag_name, "select")) select.deselect_all() select.select_by(:text, “Pedro")  .submit #ação de enviar. Pode ser chamado de um elemento form  .switch_to.window("windowName") #move para a janela especificada. Para saber o nome da janela, olhe no java script ou link que foi usado para abri-la <a href="somewhere.html" target="windowName">Click here to open a new window</a>  .window_handles #usa um "window handle" driver.window_handles.each do |handle| driver.switch_to.window handle end  driver.switch_to.frame "frameid" #muda para o frame de id especificado
  • 7. Prática! 7  Mais métodos  Popups  driver.switch_to.alert #com o objeto em mãos é possível aceitar, inserir usuário e senha, cancelar entre outras ações  Alterando as configurações do browser  driver = Selenium::WebDriver.for :firefox, :profile => profile  profile = Selenium::WebDriver::Firefox::Profile.new  profile['network.proxy.http'] = 'localhost'  profile['network.proxy.http_port'] = 9090  #ver mais em http://kb.mozillazine.org/About:config_entries  ActionBuilder #operações complexas  driver.action.drag_and_drop(element, target).perform  driver.action.click_and_hold(element).perform  driver.action.double_click(element).perform
  • 8. Prática! 8  Checkpoint  driver.find_elements(:id => “gs_htif0").length > 0 #verifica se o elemento existe. Retorna 0 se não existir  driver.find_element(:id => “id_do_elemento").text == “Enviado” #verifica um texto na tela
  • 9.  Canal TestRock! - https://www.youtube.com/channel/UCaM9f- dK58sezfVmNIoAi6g  Facebook - https://www.facebook.com/TestRockChannel/  Material - https://pt.slideshare.net/TestRockChannel  Código - https://www.dropbox.com/sh/ogqpdjsuub5wukg/AAD2rTh9iGpQTRWMcGW 2AOtHa?dl=0 Material! 9