SlideShare uma empresa Scribd logo
1 de 38
Selenium   workshop by Ronald Kaiser
Overview (ou uma tentativa) Motivação Características Componentes O Selenês Sintaxe Localizando elementos Command set Selenium IDE Ferramentas auxiliares Gotcha's e dicas Stop! - Selenium IDE hands on Selenium RC Stop! - Selenium RC hands on Selenium na intelie ....
Motivação (aviso)
Motivação Dedo do estagiário que  realizava testes 'na mão'
Motivação Automatizar testes !
Características
Características Open source (Apache 2.0 license) Suporte a maioria dos browsers: (Firefox 2/3, Safari 1/2/3, Opera 8/9, Google Chrome, um tal de IE 7/8, outro (RC)) Muito simples:  curva de aprendizado suave API (Selenium RC) para diversas linguagens:  HTML, Java, C#, Perl, PHP,  Python and Ruby
Componentes
Componentes IDE RC Grid
O Selenês Conjunto de comandos que o  Selenium ”entende”.
Sintaxe Very simple! Command  Target  Value
Localizando elementos
Localizando elementos Command  Target  Value locatorType =location
Localizando elementos Locator types: Identifier DOM XPATH
Localizando elementos - Identifier Retorna o primeiro elemento com o dado id/name HTML: <form id=&quot;loginForm&quot;> Selenium target: identifier=loginForm
Localizando elementos - DOM Javascript document way HTML: <form id=&quot;loginForm&quot;> Selenium target: dom=document.getElementById('loginForm')
Localizando elementos - XPath XPath foi criado especificamente para navegar entre os elementos e atributos de um documento XML. HTML: <form id=&quot;loginForm&quot;> Selenium target: xpath=//form[@id='loginForm']
Command set
Command set Actions Accessors Assertions
Command set - Actions Alteram o estado da aplicação open check clickAndWait focus keyPress type close  ....
Command set - Accessors Examinam o estado da aplicação e armazenam seus resultados em variáveis storeElementHeight storeElementPositionLeft storeEval storeValue ....
Command set - Assertions Verificam se o estado da aplicação está de acordo com o esperado assertAllLinks assertConfirmation assertTextPresent assertTitle ....
Selenium IDE
Ferramentas Auxiliares Plugins p/ firefox: Firebug XPath Checker
Stop!  Selenium IDE hands on
Gotcha's e dicas
Gotcha's e dicas Não dependa da estrutura Não defina locators como esse:  xpath=//body/div/div/a[contains(text(), 'bug tracker')] Dependente da estrutura do DOM Difícil manutenção!
Gotcha's e dicas Tempo de carregamento: aplicações  AJAX Actions do tipo /(.*)andWait/ não funcionam com AJAX Use /waitFor(.*)/ Ex.:  waitForElementPresent waitForVisible
Selenium RC
Stop!  Selenium RC hands on
Selenium na
Quem usa Ext?
Adobe Aetna AIG Alcatel-Lucent Amazon.com Best Buy Boeing Borland CA Canon Capgemini Cisco CNN Dow Jones & Co. EMC Fidelity General Electric Hallmark HP HSBC IBM Mott MacDonald NATO NetApp Nortel Northrop Grumman Panasonic Pixar Animation Studios Qualcomm, Inc. S&P SAP Siemens Sony Symantec Visa International more
Problema And /^I have added a &quot;([^amp;quot;]*)&quot; property with a &quot;([^amp;quot;]*)&quot; type$/ do |name, type| @browser.wait_for_element_present &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//*[contains(text(), 'Nome')]&quot; @browser.click_at &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//*[contains(text(), 'Nome')]&quot;, &quot;0,0&quot; @browser.wait_for_element_present &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input&quot; @browser.wait_for_editable &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input&quot; @browser.type &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[parent::div[not(contains(@style, 'hidden'))]]&quot;, &quot;#{name}&quot; @browser.wait_for_element_present &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[parent::div[not(contains(@style, 'hidden'))]]&quot; @browser.click_at &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//td[4]&quot;, &quot;0,0&quot; @browser.wait_for_element_present &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[contains(@class, 'x-form-focus')]&quot; @browser.click_at &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[contains(@class, 'x-form-focus')]&quot;, &quot;0,0&quot; @browser.wait_for_element_present &quot;//div[contains(@class, 'x-combo-list-item') and contains(text(),'#{type}')]&quot; @browser.click_at &quot;//div[contains(@class, 'x-combo-list-item') and contains(text(),'#{type}')]&quot;, &quot;0,0&quot;
nosso ”problema” + popularidade do Ext = selenium-extjs
selenium-extjs Framework para testar aplicações Ext com Selenium
selenium-extjs gem install selenium-extjs git://github.com/cathoderay/selenium-extjs.git
Obrigado!

Mais conteúdo relacionado

Mais procurados

Curso treinamento automação de testes com selenium
Curso treinamento automação de testes com seleniumCurso treinamento automação de testes com selenium
Curso treinamento automação de testes com seleniumCristiano Caetano
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driverJúlio de Lima
 
Automacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com SeleniumAutomacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com SeleniumFabrício Lemos
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCMayara Fernandes
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkMayara Fernandes
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e WebdriverJúlio de Lima
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Jaime Neto
 
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...Mayara Fernandes
 
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?Mayara Fernandes
 
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaFlame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaPT.JUG
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsThiago Cifani
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...tdc-globalcode
 
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com LocustTDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com LocustMayara Fernandes
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34Mayara Fernandes
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Rogério Moraes de Carvalho
 

Mais procurados (20)

Curso treinamento automação de testes com selenium
Curso treinamento automação de testes com seleniumCurso treinamento automação de testes com selenium
Curso treinamento automação de testes com selenium
 
Hands On Selenium
Hands On SeleniumHands On Selenium
Hands On Selenium
 
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
13º É dia de Java: Automação de Testes Funcionais com Selenium Web driver
 
Automacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com SeleniumAutomacão de Testes Funcionais com Selenium
Automacão de Testes Funcionais com Selenium
 
Automação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SCAutomação de Testes com Robot Framework - GUTS-SC
Automação de Testes com Robot Framework - GUTS-SC
 
Assespro pr-workshop-robot framework
Assespro pr-workshop-robot frameworkAssespro pr-workshop-robot framework
Assespro pr-workshop-robot framework
 
Selenium
SeleniumSelenium
Selenium
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
Seu framework é melhor pra quê?
Seu framework é melhor pra quê?Seu framework é melhor pra quê?
Seu framework é melhor pra quê?
 
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
[PYTHONSUL2018] Apresentação do Tutorial - Automação de Testes com Robot Fram...
 
Introducao logica2
Introducao logica2Introducao logica2
Introducao logica2
 
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
#1 Robot Floripa - Robot Framework: O que é? Onde vive? Do que se alimenta?
 
Flame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps JavaFlame Graphs, uma (boa) alternativa para profiling de apps Java
Flame Graphs, uma (boa) alternativa para profiling de apps Java
 
Aop Aspect J 1.5.4
Aop Aspect J 1.5.4Aop Aspect J 1.5.4
Aop Aspect J 1.5.4
 
Aula1
Aula1Aula1
Aula1
 
Testes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on RailsTestes Automatizados em Ruby on Rails
Testes Automatizados em Ruby on Rails
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
 
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com LocustTDCPOA2018 - Trilha Python - Testes de Performance com Locust
TDCPOA2018 - Trilha Python - Testes de Performance com Locust
 
Robot Framework no DevTests #34
Robot Framework no DevTests #34Robot Framework no DevTests #34
Robot Framework no DevTests #34
 
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
Plataforma de compiladores .NET (“Roslyn”), C# 6 e Visual Studio “14”
 

Destaque (18)

Ctl2010 Survey Data
Ctl2010 Survey DataCtl2010 Survey Data
Ctl2010 Survey Data
 
"The Power of Spiritual Business" Burlington Pecha Kucha Night
"The Power of Spiritual Business" Burlington Pecha Kucha Night"The Power of Spiritual Business" Burlington Pecha Kucha Night
"The Power of Spiritual Business" Burlington Pecha Kucha Night
 
Open Education V2
Open Education V2Open Education V2
Open Education V2
 
Sustainable Social Media
Sustainable Social Media Sustainable Social Media
Sustainable Social Media
 
Artikel Navenant
Artikel NavenantArtikel Navenant
Artikel Navenant
 
Mone,Shannon 20 Vocab Sentences
Mone,Shannon 20 Vocab SentencesMone,Shannon 20 Vocab Sentences
Mone,Shannon 20 Vocab Sentences
 
Howard W
Howard WHoward W
Howard W
 
Howard W
Howard WHoward W
Howard W
 
Fonologia seña
Fonologia señaFonologia seña
Fonologia seña
 
Class Room Assessment
Class Room AssessmentClass Room Assessment
Class Room Assessment
 
Wiggins preso
Wiggins presoWiggins preso
Wiggins preso
 
Hamtramck Powerpoint
Hamtramck PowerpointHamtramck Powerpoint
Hamtramck Powerpoint
 
From Chaos to Zen: Creating Memorable Presentations
From Chaos to Zen: Creating Memorable Presentations From Chaos to Zen: Creating Memorable Presentations
From Chaos to Zen: Creating Memorable Presentations
 
Sustainable Social Media For Real Estate
Sustainable Social Media For Real EstateSustainable Social Media For Real Estate
Sustainable Social Media For Real Estate
 
Final Slideshow May 6th 2009
Final Slideshow May 6th 2009Final Slideshow May 6th 2009
Final Slideshow May 6th 2009
 
Open Content and the Global Text Project
Open Content and the Global Text ProjectOpen Content and the Global Text Project
Open Content and the Global Text Project
 
Misarto
MisartoMisarto
Misarto
 
Open Water Knowledge Review Questions
Open Water Knowledge Review QuestionsOpen Water Knowledge Review Questions
Open Water Knowledge Review Questions
 

Semelhante a Selenium Workshop

Introdução ao Adobe Flex
Introdução ao Adobe FlexIntrodução ao Adobe Flex
Introdução ao Adobe FlexRafael Nunes
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super heroElton Minetto
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2PrinceGuru MS
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaEduardo Bregaida
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da ZendDomingos Teruel
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkLuciano Condé
 
O que esperar do Zend Framework 2
O que esperar do Zend Framework 2O que esperar do Zend Framework 2
O que esperar do Zend Framework 2Flávio Lisboa
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline AppsByclosure
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end seleniumQualister
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorAllyson Barros
 
Curso Treinamento Automação de testes com Selenium Qualister
Curso Treinamento Automação de testes com Selenium QualisterCurso Treinamento Automação de testes com Selenium Qualister
Curso Treinamento Automação de testes com Selenium QualisterQualister
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium Mayron Cachina
 

Semelhante a Selenium Workshop (20)

Cakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudouCakephp 2.0 - O que mudou
Cakephp 2.0 - O que mudou
 
Palestra
PalestraPalestra
Palestra
 
Introdução ao Adobe Flex
Introdução ao Adobe FlexIntrodução ao Adobe Flex
Introdução ao Adobe Flex
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
PHP like a super hero
PHP like a super heroPHP like a super hero
PHP like a super hero
 
Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2Phpjedi 090307090434-phpapp01 2
Phpjedi 090307090434-phpapp01 2
 
Zephir
ZephirZephir
Zephir
 
Java Seminar
Java SeminarJava Seminar
Java Seminar
 
JSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.javaJSF e outras tecnologias Java Web - IMES.java
JSF e outras tecnologias Java Web - IMES.java
 
Desmistificando o Framework da Zend
Desmistificando o Framework da ZendDesmistificando o Framework da Zend
Desmistificando o Framework da Zend
 
Deep Dive sobre Entity Framework
Deep Dive sobre Entity FrameworkDeep Dive sobre Entity Framework
Deep Dive sobre Entity Framework
 
Lab
LabLab
Lab
 
O que esperar do Zend Framework 2
O que esperar do Zend Framework 2O que esperar do Zend Framework 2
O que esperar do Zend Framework 2
 
Conhecendo o Spring
Conhecendo o SpringConhecendo o Spring
Conhecendo o Spring
 
Html5 pt - Offline Apps
Html5 pt - Offline AppsHtml5 pt - Offline Apps
Html5 pt - Offline Apps
 
Caipira agil automacao front end selenium
Caipira agil automacao front end seleniumCaipira agil automacao front end selenium
Caipira agil automacao front end selenium
 
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem DorPlay Framework - Desenvolvendo Aplicações Web com Java sem Dor
Play Framework - Desenvolvendo Aplicações Web com Java sem Dor
 
Curso Treinamento Automação de testes com Selenium Qualister
Curso Treinamento Automação de testes com Selenium QualisterCurso Treinamento Automação de testes com Selenium Qualister
Curso Treinamento Automação de testes com Selenium Qualister
 
Manual
ManualManual
Manual
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
 

Selenium Workshop

  • 1. Selenium workshop by Ronald Kaiser
  • 2. Overview (ou uma tentativa) Motivação Características Componentes O Selenês Sintaxe Localizando elementos Command set Selenium IDE Ferramentas auxiliares Gotcha's e dicas Stop! - Selenium IDE hands on Selenium RC Stop! - Selenium RC hands on Selenium na intelie ....
  • 4. Motivação Dedo do estagiário que realizava testes 'na mão'
  • 7. Características Open source (Apache 2.0 license) Suporte a maioria dos browsers: (Firefox 2/3, Safari 1/2/3, Opera 8/9, Google Chrome, um tal de IE 7/8, outro (RC)) Muito simples: curva de aprendizado suave API (Selenium RC) para diversas linguagens: HTML, Java, C#, Perl, PHP, Python and Ruby
  • 10. O Selenês Conjunto de comandos que o Selenium ”entende”.
  • 11. Sintaxe Very simple! Command Target Value
  • 13. Localizando elementos Command Target Value locatorType =location
  • 14. Localizando elementos Locator types: Identifier DOM XPATH
  • 15. Localizando elementos - Identifier Retorna o primeiro elemento com o dado id/name HTML: <form id=&quot;loginForm&quot;> Selenium target: identifier=loginForm
  • 16. Localizando elementos - DOM Javascript document way HTML: <form id=&quot;loginForm&quot;> Selenium target: dom=document.getElementById('loginForm')
  • 17. Localizando elementos - XPath XPath foi criado especificamente para navegar entre os elementos e atributos de um documento XML. HTML: <form id=&quot;loginForm&quot;> Selenium target: xpath=//form[@id='loginForm']
  • 19. Command set Actions Accessors Assertions
  • 20. Command set - Actions Alteram o estado da aplicação open check clickAndWait focus keyPress type close ....
  • 21. Command set - Accessors Examinam o estado da aplicação e armazenam seus resultados em variáveis storeElementHeight storeElementPositionLeft storeEval storeValue ....
  • 22. Command set - Assertions Verificam se o estado da aplicação está de acordo com o esperado assertAllLinks assertConfirmation assertTextPresent assertTitle ....
  • 24. Ferramentas Auxiliares Plugins p/ firefox: Firebug XPath Checker
  • 25. Stop! Selenium IDE hands on
  • 27. Gotcha's e dicas Não dependa da estrutura Não defina locators como esse: xpath=//body/div/div/a[contains(text(), 'bug tracker')] Dependente da estrutura do DOM Difícil manutenção!
  • 28. Gotcha's e dicas Tempo de carregamento: aplicações AJAX Actions do tipo /(.*)andWait/ não funcionam com AJAX Use /waitFor(.*)/ Ex.: waitForElementPresent waitForVisible
  • 30. Stop! Selenium RC hands on
  • 33. Adobe Aetna AIG Alcatel-Lucent Amazon.com Best Buy Boeing Borland CA Canon Capgemini Cisco CNN Dow Jones & Co. EMC Fidelity General Electric Hallmark HP HSBC IBM Mott MacDonald NATO NetApp Nortel Northrop Grumman Panasonic Pixar Animation Studios Qualcomm, Inc. S&P SAP Siemens Sony Symantec Visa International more
  • 34. Problema And /^I have added a &quot;([^amp;quot;]*)&quot; property with a &quot;([^amp;quot;]*)&quot; type$/ do |name, type| @browser.wait_for_element_present &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//*[contains(text(), 'Nome')]&quot; @browser.click_at &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//*[contains(text(), 'Nome')]&quot;, &quot;0,0&quot; @browser.wait_for_element_present &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input&quot; @browser.wait_for_editable &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input&quot; @browser.type &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[parent::div[not(contains(@style, 'hidden'))]]&quot;, &quot;#{name}&quot; @browser.wait_for_element_present &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[parent::div[not(contains(@style, 'hidden'))]]&quot; @browser.click_at &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-grid3-row-first')]//tr//td[4]&quot;, &quot;0,0&quot; @browser.wait_for_element_present &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[contains(@class, 'x-form-focus')]&quot; @browser.click_at &quot;//div[contains(@class, 'stream-form')]//div[contains(@class, 'x-small-editor')]//input[contains(@class, 'x-form-focus')]&quot;, &quot;0,0&quot; @browser.wait_for_element_present &quot;//div[contains(@class, 'x-combo-list-item') and contains(text(),'#{type}')]&quot; @browser.click_at &quot;//div[contains(@class, 'x-combo-list-item') and contains(text(),'#{type}')]&quot;, &quot;0,0&quot;
  • 35. nosso ”problema” + popularidade do Ext = selenium-extjs
  • 36. selenium-extjs Framework para testar aplicações Ext com Selenium
  • 37. selenium-extjs gem install selenium-extjs git://github.com/cathoderay/selenium-extjs.git