SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Findings	
  and	
  Challenges	
  
  Background	
  
  Tools	
  
  Past	
  
  Challenges	
  
  “The	
  Decision”	
  	
  
  Benefits	
  
  Conversion	
  
  Present	
  
  Examples	
  
  Custom	
  framework	
  written	
  in	
  Java	
  
  In	
  house	
  test	
  management	
  system	
  
    TestElements	
  
     ▪  Projects	
  
       ▪  Test	
  Suites	
  
            Test	
  Cases	
  
               Actions	
  
                  Data	
  Elements	
  
                  Object	
  Store	
  
  Fully	
  integrated	
  with	
  our	
  Framework	
  
  Eclipse	
  IDE	
  
  TestElements	
  
  Results	
  Viewer	
  
       +	
  iPad	
  version	
  
  SauceLabs	
  
    SeleniumIDE	
  
  Firebug	
  
  Ivy	
  
  Git	
  -­‐	
  version	
  control	
  
  Selenium	
  1	
  &	
  Selenium	
  Grid	
  
     6	
  lab	
  machines	
  
      ▪  Mac’s	
  and	
  PCs	
  with	
  different	
  browser	
  combinations	
  
     RC	
  for	
  each	
  desired	
  browser	
  on	
  local	
  machines	
  
     RC	
  for	
  each	
  desired	
  browser	
  on	
  each	
  remote	
  
     machine	
  running	
  on	
  SeleniumGrid	
  
  Maintenance	
  of	
  RC’s	
  
  If	
  1	
  RC	
  had	
  an	
  issue,	
  must	
  kill	
  all	
  RC’s,	
  restart	
  
   HUB,	
  and	
  restart	
  each	
  one	
  again	
  
  >	
  800	
  test	
  cases	
  executed	
  amongst	
  6	
  
   machines	
  multiple	
  times	
  a	
  day	
  
       ▪  (approx.	
  2500/day)	
  
  Parallel	
  execution	
  was	
  challenging	
  
     Cross	
  browser	
  testing	
  
  Solved	
  every	
  challenge	
  on	
  the	
  list	
  
  Selenium	
  RC’s	
  in	
  the	
  cloud	
  
     No	
  maintenance	
  
  Video	
  
  Replaced	
  Selenium	
  with	
  
  WebDriverBackedSelenium	
  
     Selenium	
  1	
  backwards	
  compatible	
  
  New	
  code	
  would	
  use	
  WebDriver	
  
  WebDriverBackedSelenium	
  on	
  Sauce	
  
     Each	
  selenium	
  1	
  command	
  would	
  spit	
  back	
  
      javascript,	
  causing	
  very	
  slow	
  test	
  execution	
  times	
  
     WebDriver	
  commands	
  were	
  OK	
  
  Did	
  not	
  realize	
  this	
  right	
  away	
  
  Santiago	
  the	
  ‘Sauce	
  Ninja’	
  
  Convert	
  EVERYTHING…	
  
  No	
  more	
  XPATH!	
  
    CSS_SELECTOR	
  
     ▪  Native	
  support	
  on	
  each	
  browser	
  
    ID	
  
    LINK_TEXT	
  
    Improve	
  execution	
  speed	
  on	
  Sauce	
  	
  
       (no	
  more	
  JavaScript)	
  
    Better	
  emulation	
  of	
  user	
  interactions	
  
    Better	
  API	
  –	
  More	
  object	
  oriented	
  
    Stability	
  
    Improve	
  logic	
  in	
  codebase	
  
    Don’t	
  want	
  to	
  be	
  left	
  behind	
  
    New	
  version	
  of	
  Selenium	
  all	
  the	
  time	
  
       Bug	
  fixes,	
  improvements	
  
       Feel	
  they	
  care	
  about	
  the	
  product	
  
    Fun	
  
  Line	
  by	
  Line	
  conversion	
  
     remove	
  any	
  selenium1	
  references	
  
  Not	
  enough	
  documentation	
  existed	
  
  Not	
  everything	
  appeared	
  to	
  be	
  easily	
  
  converted	
  
     hover	
  /	
  mouseOver	
  
     select	
  from	
  combo	
  box	
  
     attachFile	
  
  Different	
  functionality	
  
     Objects	
  must	
  be	
  visible	
  before	
  acting	
  on	
  them	
  
     Type	
  mechanism	
  does	
  not	
  clear	
  the	
  text	
  field	
  
      before	
  filling	
  it	
  out	
  *	
  changed	
  in	
  2.6	
  
     Selenium2	
  is	
  blocking	
  
       ▪  No	
  more	
  waitForPageToLoad(….)	
  	
  
     Use	
  ExpectedCondition	
  class	
  to	
  wait	
  for	
  
       presence	
  /	
  visibility	
  of	
  element	
  
  Different	
  names	
  
     no	
  more	
  isElementPresent	
  /	
  isVisible 	
  	
  
  Simplify	
  codebase	
  
  Find	
  Selenium2	
  conversion	
  for	
  everything	
  
   and	
  create	
  wrapper	
  in	
  our	
  Framework	
  
  SeleniumBase.java	
  was	
  born	
  
    Custom	
  WebDriver	
  commands	
  
    All	
  scripts	
  extend	
  from	
  this	
  class	
  
    Less	
  clutter	
  
    Maintainability	
  
public WebDriver getWebDriver() {	
       return webDriver;	
}	
	
public WebElement getWebElement(LocatorType locatorType, String locator) throws Exception {	
       return getWebDriver().findElement(by(locatorType, locator));	
}	
	
public List<WebElement> getWebElements(LocatorType locatorType, String locator) throws Exception {	
       return getWebDriver().findElements(by(locatorType, locator));	
}	
	
public boolean isElementPresent(LocatorType locatorType, String locator) throws Exception { 	
       return getWebElements(locatorType,locator).size() > 0;	
}	
	
public boolean isVisible(LocatorType locatorType, String locator) throws Exception {	
       return getWebElement(locatorType,locator).isDisplayed();	
}	
	
public void waitForElementPresent(final LocatorType locatorType, final String locator) throws Exception {	
      getWait().until(new ExpectedCondition<Boolean>() { 	
         public Boolean apply(WebDriver d) {	
             try {	
                return isElementPresent(locatorType, locator);	
             } catch (Exception e) {	
                return false;	
             }	
         } 	
      });	
}	
  
public void clearAndSendKeys(LocatorType locatorType, String locator, String keys) throws Exception {	
       getWebElement(locatorType, locator).clear();	
       getWebElement(locatorType, locator).sendKeys(keys);	
}	
	
public void check(LocatorType locatorType, String locator) throws Exception {	
       if(!getWebElement(locatorType, locator).isSelected())	
           getWebElement(locatorType, locator).click();	
}	
	
public void mouseOver(LocatorType locatorType, String locator) throws Exception{	
       Actions action = new Actions(getWebDriver());	
       action.moveToElement(getWebElement(locatorType, locator)).perform();	
}	
	
public void selectComboBoxByVisibleText(LocatorType locatorType, String locator, String value) throws
       Exception{	
       Select comboBox = new Select(getWebElement(locatorType, locator));	
       comboBox.selectByVisibleText(value);	
}	
	
public void switchToWindow(String windowTitle){	
       Set<String> windowHandles = getWebDriver().getWindowHandles();	
      	Iterator<String> iter = windowHandles.iterator();	
	
      	while(iter.hasNext()){	
      	    String currentWindowHandle = iter.next();	
      	    getWebDriver().switchTo().window(currentWindowHandle);	
      	    if(getWebDriver().getTitle().equals(windowTitle))	
      	     	break;	
       }	
}	
  
clearAndSendKeys(LocatorType.ID,"Gilt Login Page","Email Address Text Field”,emailAddress);	
clearAndSendKeys(LocatorType.ID,"Gilt Login Page","Password Text Field”,password);	
getWebElement(LocatorType.ID,"Gilt Login Page","Sign In Button").click();
waitForElementPresentAndVisible(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab");	
mouseOver(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab");	
List<WebElement> saleTitle = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab Sale Links");	
	
  
List<WebElement> productLookTitleAll = 	
   getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Product Look Title Links");	
List<WebElement> productLookTitleAvailable =	
   getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Available Product Look Title Links");	
List<WebElement> productLookSoldOut = 	
   getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Sold Out Product Look Title Links");	
  
  99.9999%	
  converted	
  to	
  Selenium2	
  
        ▪  attachFile()	
  
  Stable	
  results	
  
  Clean,	
  easy	
  to	
  manage	
  code	
  
  SeleniumBase	
  continues	
  to	
  grow	
  
  Ivy	
  to	
  manage	
  dependencies	
  
     Upgrade	
  to	
  Selenium	
  2.x	
  quickly	
  
     Push	
  changes	
  to	
  team	
  through	
  Git	
  
  Make	
  the	
  switch	
  
     Spread	
  the	
  work	
  out	
  to	
  save	
  time	
  
  Be	
  aware	
  of	
  the	
  differences	
  b/t	
  Sel1	
  and	
  Sel2	
  
     More	
  documentation	
  
  Modularize	
  common	
  selenium	
  commands	
  
  Selenium	
  Users	
  google	
  group	
  
  Question???	
  
  Comments….	
  

Email:	
  jsanchez@gilt.com	
  
	
  
Invitation:	
  http://www.gilt.com/invite/josesanchez	
  
	
  

Mais conteúdo relacionado

Mais procurados

React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7Dongho Cho
 
Academy PRO: React JS. Redux & Tooling
Academy PRO: React JS. Redux & ToolingAcademy PRO: React JS. Redux & Tooling
Academy PRO: React JS. Redux & ToolingBinary Studio
 
Testable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScriptTestable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScriptJon Kruger
 
OSMC 2009 | Application Monitoring - Bridging the gap... by Michael Medin
OSMC 2009 |  Application Monitoring - Bridging the gap... by Michael MedinOSMC 2009 |  Application Monitoring - Bridging the gap... by Michael Medin
OSMC 2009 | Application Monitoring - Bridging the gap... by Michael MedinNETWAYS
 
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Venturing Into The Wild: A .NET Developer's Experience As A Ruby DeveloperVenturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Venturing Into The Wild: A .NET Developer's Experience As A Ruby DeveloperJon Kruger
 
React state managmenet with Redux
React state managmenet with ReduxReact state managmenet with Redux
React state managmenet with ReduxVedran Blaženka
 
Basic Tutorial of React for Programmers
Basic Tutorial of React for ProgrammersBasic Tutorial of React for Programmers
Basic Tutorial of React for ProgrammersDavid Rodenas
 
J Query The Write Less Do More Javascript Library
J Query   The Write Less Do More Javascript LibraryJ Query   The Write Less Do More Javascript Library
J Query The Write Less Do More Javascript Libraryrsnarayanan
 
React Lifecycle and Reconciliation
React Lifecycle and ReconciliationReact Lifecycle and Reconciliation
React Lifecycle and ReconciliationZhihao Li
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of JavascriptTarek Yehia
 
Java EE 8 security and JSON binding API
Java EE 8 security and JSON binding APIJava EE 8 security and JSON binding API
Java EE 8 security and JSON binding APIAlex Theedom
 
What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?Sanjeeb Sahoo
 
"Migrate large gwt applications - Lessons Learned" By Harald Pehl
"Migrate large gwt applications - Lessons Learned" By Harald Pehl"Migrate large gwt applications - Lessons Learned" By Harald Pehl
"Migrate large gwt applications - Lessons Learned" By Harald PehlGWTcon
 
Mobile Day - React Native
Mobile Day - React NativeMobile Day - React Native
Mobile Day - React NativeSoftware Guru
 

Mais procurados (19)

jQuery Presentasion
jQuery PresentasionjQuery Presentasion
jQuery Presentasion
 
React, Redux and es6/7
React, Redux and es6/7React, Redux and es6/7
React, Redux and es6/7
 
Academy PRO: React JS. Redux & Tooling
Academy PRO: React JS. Redux & ToolingAcademy PRO: React JS. Redux & Tooling
Academy PRO: React JS. Redux & Tooling
 
Testable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScriptTestable, Object-Oriented JavaScript
Testable, Object-Oriented JavaScript
 
OSMC 2009 | Application Monitoring - Bridging the gap... by Michael Medin
OSMC 2009 |  Application Monitoring - Bridging the gap... by Michael MedinOSMC 2009 |  Application Monitoring - Bridging the gap... by Michael Medin
OSMC 2009 | Application Monitoring - Bridging the gap... by Michael Medin
 
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Venturing Into The Wild: A .NET Developer's Experience As A Ruby DeveloperVenturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
Venturing Into The Wild: A .NET Developer's Experience As A Ruby Developer
 
DirectToWeb 2.0
DirectToWeb 2.0DirectToWeb 2.0
DirectToWeb 2.0
 
React state managmenet with Redux
React state managmenet with ReduxReact state managmenet with Redux
React state managmenet with Redux
 
React и redux
React и reduxReact и redux
React и redux
 
Basic Tutorial of React for Programmers
Basic Tutorial of React for ProgrammersBasic Tutorial of React for Programmers
Basic Tutorial of React for Programmers
 
J query training
J query trainingJ query training
J query training
 
J Query The Write Less Do More Javascript Library
J Query   The Write Less Do More Javascript LibraryJ Query   The Write Less Do More Javascript Library
J Query The Write Less Do More Javascript Library
 
React Lifecycle and Reconciliation
React Lifecycle and ReconciliationReact Lifecycle and Reconciliation
React Lifecycle and Reconciliation
 
Art of Javascript
Art of JavascriptArt of Javascript
Art of Javascript
 
Java EE 8 security and JSON binding API
Java EE 8 security and JSON binding APIJava EE 8 security and JSON binding API
Java EE 8 security and JSON binding API
 
What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?What's New in Enterprise JavaBean Technology ?
What's New in Enterprise JavaBean Technology ?
 
UI testing in Xcode 7
UI testing in Xcode 7UI testing in Xcode 7
UI testing in Xcode 7
 
"Migrate large gwt applications - Lessons Learned" By Harald Pehl
"Migrate large gwt applications - Lessons Learned" By Harald Pehl"Migrate large gwt applications - Lessons Learned" By Harald Pehl
"Migrate large gwt applications - Lessons Learned" By Harald Pehl
 
Mobile Day - React Native
Mobile Day - React NativeMobile Day - React Native
Mobile Day - React Native
 

Destaque

Beyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms OrganizationsBeyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms OrganizationsSauce Labs
 
WebDriver: The Final Frontier - Selenium Camp 2014
WebDriver: The Final Frontier - Selenium Camp 2014WebDriver: The Final Frontier - Selenium Camp 2014
WebDriver: The Final Frontier - Selenium Camp 2014Sauce Labs
 
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeterCombining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeterSauce Labs
 
Transitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QATransitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QASauce Labs
 
Accelerating DevOps Collaboration with Sauce Labs and JIRA
Accelerating DevOps Collaboration with Sauce Labs and JIRAAccelerating DevOps Collaboration with Sauce Labs and JIRA
Accelerating DevOps Collaboration with Sauce Labs and JIRASauce Labs
 
Making the Transition from Manual to Automated Testing
Making the Transition from Manual to Automated TestingMaking the Transition from Manual to Automated Testing
Making the Transition from Manual to Automated TestingSauce Labs
 

Destaque (6)

Beyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms OrganizationsBeyond the Release: CI That Transforms Organizations
Beyond the Release: CI That Transforms Organizations
 
WebDriver: The Final Frontier - Selenium Camp 2014
WebDriver: The Final Frontier - Selenium Camp 2014WebDriver: The Final Frontier - Selenium Camp 2014
WebDriver: The Final Frontier - Selenium Camp 2014
 
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeterCombining Front-End and Backend Testing with Sauce Labs & BlazeMeter
Combining Front-End and Backend Testing with Sauce Labs & BlazeMeter
 
Transitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QATransitioning from Traditional to Modern QA
Transitioning from Traditional to Modern QA
 
Accelerating DevOps Collaboration with Sauce Labs and JIRA
Accelerating DevOps Collaboration with Sauce Labs and JIRAAccelerating DevOps Collaboration with Sauce Labs and JIRA
Accelerating DevOps Collaboration with Sauce Labs and JIRA
 
Making the Transition from Manual to Automated Testing
Making the Transition from Manual to Automated TestingMaking the Transition from Manual to Automated Testing
Making the Transition from Manual to Automated Testing
 

Semelhante a Gilt Groupe's Selenium 2 Conversion Challenges

Top100summit 谷歌-scott-improve your automated web application testing
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testingdrewz lin
 
Automation with Selenium Presented by Quontra Solutions
Automation with Selenium Presented by Quontra SolutionsAutomation with Selenium Presented by Quontra Solutions
Automation with Selenium Presented by Quontra SolutionsQuontra Solutions
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instrumentsArtem Nagornyi
 
Тарас Олексин - Sculpt! Your! Tests!
Тарас Олексин  - Sculpt! Your! Tests!Тарас Олексин  - Sculpt! Your! Tests!
Тарас Олексин - Sculpt! Your! Tests!DataArt
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsSoós Gábor
 
Latest Selenium Interview Questions And Answers.pdf
Latest Selenium Interview Questions And Answers.pdfLatest Selenium Interview Questions And Answers.pdf
Latest Selenium Interview Questions And Answers.pdfVarsha Rajput
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)Christian Rokitta
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web FrameworkLuther Baker
 
Escape from the automation hell
Escape from the automation hellEscape from the automation hell
Escape from the automation hellNikita Simonovets
 
Testcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentationTestcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentationRichard North
 
Component Based Unit Testing ADF with Selenium
Component Based Unit Testing ADF with SeleniumComponent Based Unit Testing ADF with Selenium
Component Based Unit Testing ADF with SeleniumRichard Olrichs
 
Automation Testing
Automation TestingAutomation Testing
Automation TestingRomSoft SRL
 
Java. Explicit and Implicit Wait. Testing Ajax Applications
Java. Explicit and Implicit Wait. Testing Ajax ApplicationsJava. Explicit and Implicit Wait. Testing Ajax Applications
Java. Explicit and Implicit Wait. Testing Ajax ApplicationsМарія Русин
 
Automated acceptance test
Automated acceptance testAutomated acceptance test
Automated acceptance testBryan Liu
 
JavaFX for Business Application Developers
JavaFX for Business Application DevelopersJavaFX for Business Application Developers
JavaFX for Business Application DevelopersMichael Heinrichs
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenerytoddbr
 
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Improving Your Selenium WebDriver Tests - Belgium testing days_2016Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Improving Your Selenium WebDriver Tests - Belgium testing days_2016Roy de Kleijn
 

Semelhante a Gilt Groupe's Selenium 2 Conversion Challenges (20)

Top100summit 谷歌-scott-improve your automated web application testing
Top100summit  谷歌-scott-improve your automated web application testingTop100summit  谷歌-scott-improve your automated web application testing
Top100summit 谷歌-scott-improve your automated web application testing
 
Web driver training
Web driver trainingWeb driver training
Web driver training
 
Automation with Selenium Presented by Quontra Solutions
Automation with Selenium Presented by Quontra SolutionsAutomation with Selenium Presented by Quontra Solutions
Automation with Selenium Presented by Quontra Solutions
 
Web UI test automation instruments
Web UI test automation instrumentsWeb UI test automation instruments
Web UI test automation instruments
 
Тарас Олексин - Sculpt! Your! Tests!
Тарас Олексин  - Sculpt! Your! Tests!Тарас Олексин  - Sculpt! Your! Tests!
Тарас Олексин - Sculpt! Your! Tests!
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.js
 
Latest Selenium Interview Questions And Answers.pdf
Latest Selenium Interview Questions And Answers.pdfLatest Selenium Interview Questions And Answers.pdf
Latest Selenium Interview Questions And Answers.pdf
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web Framework
 
Dropwizard
DropwizardDropwizard
Dropwizard
 
Escape from the automation hell
Escape from the automation hellEscape from the automation hell
Escape from the automation hell
 
Testcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentationTestcontainers - Geekout EE 2017 presentation
Testcontainers - Geekout EE 2017 presentation
 
Component Based Unit Testing ADF with Selenium
Component Based Unit Testing ADF with SeleniumComponent Based Unit Testing ADF with Selenium
Component Based Unit Testing ADF with Selenium
 
Automated Testing ADF with Selenium
Automated Testing ADF with SeleniumAutomated Testing ADF with Selenium
Automated Testing ADF with Selenium
 
Automation Testing
Automation TestingAutomation Testing
Automation Testing
 
Java. Explicit and Implicit Wait. Testing Ajax Applications
Java. Explicit and Implicit Wait. Testing Ajax ApplicationsJava. Explicit and Implicit Wait. Testing Ajax Applications
Java. Explicit and Implicit Wait. Testing Ajax Applications
 
Automated acceptance test
Automated acceptance testAutomated acceptance test
Automated acceptance test
 
JavaFX for Business Application Developers
JavaFX for Business Application DevelopersJavaFX for Business Application Developers
JavaFX for Business Application Developers
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Improving Your Selenium WebDriver Tests - Belgium testing days_2016Improving Your Selenium WebDriver Tests - Belgium testing days_2016
Improving Your Selenium WebDriver Tests - Belgium testing days_2016
 

Mais de Sauce Labs

Simplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless ToolsSimplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless ToolsSauce Labs
 
Testing on Mobile Devices with Location Services
Testing on Mobile Devices with Location ServicesTesting on Mobile Devices with Location Services
Testing on Mobile Devices with Location ServicesSauce Labs
 
Your Framework for Success: introduction to JavaScript Testing at Scale
Your Framework for Success: introduction to JavaScript Testing at ScaleYour Framework for Success: introduction to JavaScript Testing at Scale
Your Framework for Success: introduction to JavaScript Testing at ScaleSauce Labs
 
Automating Hybrid Applications with Appium
Automating Hybrid Applications with AppiumAutomating Hybrid Applications with Appium
Automating Hybrid Applications with AppiumSauce Labs
 
Quality at Speed: More API Testing, Less UI Testing
Quality at Speed: More API Testing, Less UI TestingQuality at Speed: More API Testing, Less UI Testing
Quality at Speed: More API Testing, Less UI TestingSauce Labs
 
Creating Digital Confidence with Test Automation
Creating Digital Confidence with Test AutomationCreating Digital Confidence with Test Automation
Creating Digital Confidence with Test AutomationSauce Labs
 
Just Enough (Automated) Testing
Just Enough (Automated) TestingJust Enough (Automated) Testing
Just Enough (Automated) TestingSauce Labs
 
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
Using Axe to Add Accessibility Checks to Your Existing Selenium TestsUsing Axe to Add Accessibility Checks to Your Existing Selenium Tests
Using Axe to Add Accessibility Checks to Your Existing Selenium TestsSauce Labs
 
How Open Source Helps to Bring Back Product Obsession
How Open Source Helps to Bring Back Product ObsessionHow Open Source Helps to Bring Back Product Obsession
How Open Source Helps to Bring Back Product ObsessionSauce Labs
 
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
Webinar: A Sneak Peek at Selenium 4 with Simon StewartWebinar: A Sneak Peek at Selenium 4 with Simon Stewart
Webinar: A Sneak Peek at Selenium 4 with Simon StewartSauce Labs
 
[Deu] Test Automatisierung Mit Web Driver.io
[Deu] Test Automatisierung Mit Web Driver.io[Deu] Test Automatisierung Mit Web Driver.io
[Deu] Test Automatisierung Mit Web Driver.ioSauce Labs
 
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...Sauce Labs
 
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
Accelerating Your Digital Agenda with Continuous Testing ft. ForresterAccelerating Your Digital Agenda with Continuous Testing ft. Forrester
Accelerating Your Digital Agenda with Continuous Testing ft. ForresterSauce Labs
 
How to Measure Success in Continuous Testing
How to Measure Success in Continuous TestingHow to Measure Success in Continuous Testing
How to Measure Success in Continuous TestingSauce Labs
 
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...Sauce Labs
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test AutomationSauce Labs
 
Sauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs Webinar: Rising Importance of Software TestingSauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs Webinar: Rising Importance of Software TestingSauce Labs
 
BDD With Selenide by Hima Bindu Peteti
BDD With Selenide by Hima Bindu PetetiBDD With Selenide by Hima Bindu Peteti
BDD With Selenide by Hima Bindu PetetiSauce Labs
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Sauce Labs
 
Continuous Delivery for "Mature" Codebases by Melisa Benua
Continuous Delivery for "Mature" Codebases by Melisa BenuaContinuous Delivery for "Mature" Codebases by Melisa Benua
Continuous Delivery for "Mature" Codebases by Melisa BenuaSauce Labs
 

Mais de Sauce Labs (20)

Simplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless ToolsSimplify Salesforce Testing with AI-Driven Codeless Tools
Simplify Salesforce Testing with AI-Driven Codeless Tools
 
Testing on Mobile Devices with Location Services
Testing on Mobile Devices with Location ServicesTesting on Mobile Devices with Location Services
Testing on Mobile Devices with Location Services
 
Your Framework for Success: introduction to JavaScript Testing at Scale
Your Framework for Success: introduction to JavaScript Testing at ScaleYour Framework for Success: introduction to JavaScript Testing at Scale
Your Framework for Success: introduction to JavaScript Testing at Scale
 
Automating Hybrid Applications with Appium
Automating Hybrid Applications with AppiumAutomating Hybrid Applications with Appium
Automating Hybrid Applications with Appium
 
Quality at Speed: More API Testing, Less UI Testing
Quality at Speed: More API Testing, Less UI TestingQuality at Speed: More API Testing, Less UI Testing
Quality at Speed: More API Testing, Less UI Testing
 
Creating Digital Confidence with Test Automation
Creating Digital Confidence with Test AutomationCreating Digital Confidence with Test Automation
Creating Digital Confidence with Test Automation
 
Just Enough (Automated) Testing
Just Enough (Automated) TestingJust Enough (Automated) Testing
Just Enough (Automated) Testing
 
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
Using Axe to Add Accessibility Checks to Your Existing Selenium TestsUsing Axe to Add Accessibility Checks to Your Existing Selenium Tests
Using Axe to Add Accessibility Checks to Your Existing Selenium Tests
 
How Open Source Helps to Bring Back Product Obsession
How Open Source Helps to Bring Back Product ObsessionHow Open Source Helps to Bring Back Product Obsession
How Open Source Helps to Bring Back Product Obsession
 
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
Webinar: A Sneak Peek at Selenium 4 with Simon StewartWebinar: A Sneak Peek at Selenium 4 with Simon Stewart
Webinar: A Sneak Peek at Selenium 4 with Simon Stewart
 
[Deu] Test Automatisierung Mit Web Driver.io
[Deu] Test Automatisierung Mit Web Driver.io[Deu] Test Automatisierung Mit Web Driver.io
[Deu] Test Automatisierung Mit Web Driver.io
 
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
Accelerating Innovation: Leveraging Open Source to Optimize Your Shift-Left I...
 
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
Accelerating Your Digital Agenda with Continuous Testing ft. ForresterAccelerating Your Digital Agenda with Continuous Testing ft. Forrester
Accelerating Your Digital Agenda with Continuous Testing ft. Forrester
 
How to Measure Success in Continuous Testing
How to Measure Success in Continuous TestingHow to Measure Success in Continuous Testing
How to Measure Success in Continuous Testing
 
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
From Zero to 2.7 Million - How Verizon Media Embraced Open Source to Accelera...
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
 
Sauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs Webinar: Rising Importance of Software TestingSauce Labs Webinar: Rising Importance of Software Testing
Sauce Labs Webinar: Rising Importance of Software Testing
 
BDD With Selenide by Hima Bindu Peteti
BDD With Selenide by Hima Bindu PetetiBDD With Selenide by Hima Bindu Peteti
BDD With Selenide by Hima Bindu Peteti
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
 
Continuous Delivery for "Mature" Codebases by Melisa Benua
Continuous Delivery for "Mature" Codebases by Melisa BenuaContinuous Delivery for "Mature" Codebases by Melisa Benua
Continuous Delivery for "Mature" Codebases by Melisa Benua
 

Último

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 

Último (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 

Gilt Groupe's Selenium 2 Conversion Challenges

  • 2.   Background     Tools     Past     Challenges     “The  Decision”       Benefits     Conversion     Present     Examples  
  • 3.   Custom  framework  written  in  Java     In  house  test  management  system     TestElements   ▪  Projects   ▪  Test  Suites     Test  Cases     Actions     Data  Elements     Object  Store     Fully  integrated  with  our  Framework  
  • 4.   Eclipse  IDE     TestElements     Results  Viewer     +  iPad  version     SauceLabs     SeleniumIDE     Firebug     Ivy     Git  -­‐  version  control  
  • 5.   Selenium  1  &  Selenium  Grid     6  lab  machines   ▪  Mac’s  and  PCs  with  different  browser  combinations     RC  for  each  desired  browser  on  local  machines     RC  for  each  desired  browser  on  each  remote   machine  running  on  SeleniumGrid  
  • 6.   Maintenance  of  RC’s     If  1  RC  had  an  issue,  must  kill  all  RC’s,  restart   HUB,  and  restart  each  one  again     >  800  test  cases  executed  amongst  6   machines  multiple  times  a  day   ▪  (approx.  2500/day)     Parallel  execution  was  challenging     Cross  browser  testing  
  • 7.   Solved  every  challenge  on  the  list     Selenium  RC’s  in  the  cloud     No  maintenance     Video     Replaced  Selenium  with   WebDriverBackedSelenium     Selenium  1  backwards  compatible     New  code  would  use  WebDriver  
  • 8.   WebDriverBackedSelenium  on  Sauce     Each  selenium  1  command  would  spit  back   javascript,  causing  very  slow  test  execution  times     WebDriver  commands  were  OK     Did  not  realize  this  right  away     Santiago  the  ‘Sauce  Ninja’  
  • 9.
  • 10.   Convert  EVERYTHING…     No  more  XPATH!     CSS_SELECTOR   ▪  Native  support  on  each  browser     ID     LINK_TEXT  
  • 11.   Improve  execution  speed  on  Sauce       (no  more  JavaScript)     Better  emulation  of  user  interactions     Better  API  –  More  object  oriented     Stability     Improve  logic  in  codebase     Don’t  want  to  be  left  behind     New  version  of  Selenium  all  the  time     Bug  fixes,  improvements     Feel  they  care  about  the  product     Fun  
  • 12.   Line  by  Line  conversion     remove  any  selenium1  references     Not  enough  documentation  existed     Not  everything  appeared  to  be  easily   converted     hover  /  mouseOver     select  from  combo  box     attachFile  
  • 13.   Different  functionality     Objects  must  be  visible  before  acting  on  them     Type  mechanism  does  not  clear  the  text  field   before  filling  it  out  *  changed  in  2.6     Selenium2  is  blocking   ▪  No  more  waitForPageToLoad(….)       Use  ExpectedCondition  class  to  wait  for   presence  /  visibility  of  element     Different  names     no  more  isElementPresent  /  isVisible    
  • 14.   Simplify  codebase     Find  Selenium2  conversion  for  everything   and  create  wrapper  in  our  Framework     SeleniumBase.java  was  born     Custom  WebDriver  commands     All  scripts  extend  from  this  class     Less  clutter     Maintainability  
  • 15.
  • 16.
  • 17. public WebDriver getWebDriver() { return webDriver; } public WebElement getWebElement(LocatorType locatorType, String locator) throws Exception { return getWebDriver().findElement(by(locatorType, locator)); } public List<WebElement> getWebElements(LocatorType locatorType, String locator) throws Exception { return getWebDriver().findElements(by(locatorType, locator)); } public boolean isElementPresent(LocatorType locatorType, String locator) throws Exception { return getWebElements(locatorType,locator).size() > 0; } public boolean isVisible(LocatorType locatorType, String locator) throws Exception { return getWebElement(locatorType,locator).isDisplayed(); } public void waitForElementPresent(final LocatorType locatorType, final String locator) throws Exception { getWait().until(new ExpectedCondition<Boolean>() { public Boolean apply(WebDriver d) { try { return isElementPresent(locatorType, locator); } catch (Exception e) { return false; } } }); }  
  • 18. public void clearAndSendKeys(LocatorType locatorType, String locator, String keys) throws Exception { getWebElement(locatorType, locator).clear(); getWebElement(locatorType, locator).sendKeys(keys); } public void check(LocatorType locatorType, String locator) throws Exception { if(!getWebElement(locatorType, locator).isSelected()) getWebElement(locatorType, locator).click(); } public void mouseOver(LocatorType locatorType, String locator) throws Exception{ Actions action = new Actions(getWebDriver()); action.moveToElement(getWebElement(locatorType, locator)).perform(); } public void selectComboBoxByVisibleText(LocatorType locatorType, String locator, String value) throws Exception{ Select comboBox = new Select(getWebElement(locatorType, locator)); comboBox.selectByVisibleText(value); } public void switchToWindow(String windowTitle){ Set<String> windowHandles = getWebDriver().getWindowHandles(); Iterator<String> iter = windowHandles.iterator(); while(iter.hasNext()){ String currentWindowHandle = iter.next(); getWebDriver().switchTo().window(currentWindowHandle); if(getWebDriver().getTitle().equals(windowTitle)) break; } }  
  • 19. clearAndSendKeys(LocatorType.ID,"Gilt Login Page","Email Address Text Field”,emailAddress); clearAndSendKeys(LocatorType.ID,"Gilt Login Page","Password Text Field”,password); getWebElement(LocatorType.ID,"Gilt Login Page","Sign In Button").click();
  • 20. waitForElementPresentAndVisible(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab"); mouseOver(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab"); List<WebElement> saleTitle = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Carousel Bar","Selected Tab Sale Links");  
  • 21. List<WebElement> productLookTitleAll = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Product Look Title Links"); List<WebElement> productLookTitleAvailable = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Available Product Look Title Links"); List<WebElement> productLookSoldOut = getWebElements(LocatorType.CSS_SELECTOR,"Gilt Product Listing Page","Sold Out Product Look Title Links");  
  • 22.   99.9999%  converted  to  Selenium2   ▪  attachFile()     Stable  results     Clean,  easy  to  manage  code     SeleniumBase  continues  to  grow     Ivy  to  manage  dependencies     Upgrade  to  Selenium  2.x  quickly     Push  changes  to  team  through  Git  
  • 23.   Make  the  switch     Spread  the  work  out  to  save  time     Be  aware  of  the  differences  b/t  Sel1  and  Sel2     More  documentation     Modularize  common  selenium  commands     Selenium  Users  google  group  
  • 24.   Question???     Comments….   Email:  jsanchez@gilt.com     Invitation:  http://www.gilt.com/invite/josesanchez