SlideShare a Scribd company logo
1 of 20
Download to read offline
6/2/15	
  
1	
  
©2015 Eid Passport, Inc. All rights reserved.©2015 Eid Passport, Inc. All rights reserved.
How to Prevent Test
Automation Shelfware:
A Selenium-WebDriver Case Study
Alan Ark
aark@eidpassport.com
http://www.linkedin.com/in/arkie
©2015 Eid Passport, Inc. All rights reserved.
Goals
2
Introduction to Selenium
Tips and Tricks
Pitfalls to Avoid
Ask questions as we go!
6/2/15	
  
2	
  
©2015 Eid Passport, Inc. All rights reserved.
Watir?
Web Application Testing in Ruby
A different open source project that drives
browsers for test automation
©2015 Eid Passport, Inc. All rights reserved.
What is Selenium?
A tool to automate browsers!
Quick regression testing across many browsers
Automate web based admin tasks
6/2/15	
  
3	
  
©2015 Eid Passport, Inc. All rights reserved.
Why Selenium over Watir?
Choice
More widely supported
More bindings available
©2015 Eid Passport, Inc. All rights reserved.
Regression testing!
Repetitive test efforts
Time consuming
Reproducible tests across many browsers
6/2/15	
  
4	
  
©2015 Eid Passport, Inc. All rights reserved.
Automation of web based admin tasks!
Creation of data
Reading of records on the browser
Updating of content
Deletion of records
©2015 Eid Passport, Inc. All rights reserved.
What version of Selenium?
Don’t use Selenium 1.0 - Selenium IDE
Recorder is deprecated
Javascript Injection to drive a browser
Selenium 2 uses WebDriver
http://docs.seleniumhq.org/projects/webdriver/
6/2/15	
  
5	
  
©2015 Eid Passport, Inc. All rights reserved.
WebDriver?
A platform and language-neutral interface that
allows programs or scripts to introspect into, and
control the behaviour of, a web browser
http://www.w3.org/TR/2013/WD-
webdriver-20130117/
©2015 Eid Passport, Inc. All rights reserved.
How do I start?
Pick a language!
Java
C#
python
ruby
others supported as well
6/2/15	
  
6	
  
©2015 Eid Passport, Inc. All rights reserved.
Pick your browser/driver
Firefox
Chrome
IE
Safari
many more!
©2015 Eid Passport, Inc. All rights reserved.
How do I interact with the browser?
Dev tools are built-in to browsers
Inspect the HTML to glean the locators to use
var	
  inputElement	
  =	
  
	
  	
  driver.FindElement(By.Name("myButton"));	
  
	
  
inputElement.Click();	
  
6/2/15	
  
7	
  
©2015 Eid Passport, Inc. All rights reserved.
Built-in locators
Use these if you can
driver.FindElement(By.Name("myName"));	
  
driver.FindElement(By.Id("myId"));	
  
driver.FindElement(By.ClassName("myClass"));	
  
others as well
	
  	
  
©2015 Eid Passport, Inc. All rights reserved.
XPath vs. CSS
XPath
//div[.	
  ='Some	
  Text	
  of	
  the	
  Div']	
  
	
  
CSS
	
  table[id='tblBadgeInfo']	
  thead	
  td	
  
	
  
Speed considerations?
6/2/15	
  
8	
  
©2015 Eid Passport, Inc. All rights reserved.
Tips to avoid headaches….
GUI based tests sometimes thought of as fragile,
brittle or unreliable
How to prevent your Selenium automation from
becoming shelfware
©2015 Eid Passport, Inc. All rights reserved.
Use unique locators
Very difficult if locators are not unique
Avoid using index numbers
Ask for some name/id/class on UI elements from
the development team
6/2/15	
  
9	
  
©2015 Eid Passport, Inc. All rights reserved.
Do not use hard coded sleeps
Makes test scripts brittle when run on different
environments.
	
  
//	
  Sleep	
  for	
  5	
  seconds	
  
Thread.Sleep(5000);	
  	
  
	
  	
  
button.Click();	
  
©2015 Eid Passport, Inc. All rights reserved.
Use a polling wait
Be flexible and return as soon as possible but
ignore exceptions
6/2/15	
  
10	
  
©2015 Eid Passport, Inc. All rights reserved.
Use WebDriverWait
WebDriverWait	
  wait	
  =	
  new	
  WebDriverWait(driver,	
  
TimeSpan.FromSeconds(30));	
  
	
  
IWebElement	
  myDynamicElement	
  =	
  
wait.Until<IWebElement>((d)	
  =>	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  return	
  d.FindElement(By.Id("myButtonId"));	
  
	
  	
  	
  	
  });	
  
©2015 Eid Passport, Inc. All rights reserved.
Use ExpectedConditions
Convenience methods on things that are checked
often. Use these with WebDriverWait.
http://selenium.googlecode.com/git/docs/api/
dotnet/html/
AllMembers_T_OpenQA_Selenium_Support_UI_E
xpectedConditions.htm
6/2/15	
  
11	
  
©2015 Eid Passport, Inc. All rights reserved.
Use Page Objects
Isolate UI elements from the test cases
If the UI changes, your tests only need to be
modified in a single place - the Page Object that
defines the UI
Reduces duplicate code
©2015 Eid Passport, Inc. All rights reserved.
Login Page Example
6/2/15	
  
12	
  
©2015 Eid Passport, Inc. All rights reserved.
Login Page Object
class	
  LoginPage	
  :	
  BasePage	
  {	
  
	
  
	
  public	
  LoginPage()	
  {}	
  
	
  
	
  public	
  void	
  Login(string	
  username,string	
  password)	
  {	
  
	
  	
  var	
  nameElement	
  =	
  driver.FindElement(By.Name("username"));	
  
	
  	
  nameElement.SendKeys(username);	
  
	
  
	
  	
  var	
  passElement	
  =	
  driver.FindElement(By.Name("password"));	
  
	
  	
  passElement.SendKeys(password);	
  
	
  
	
  	
  var	
  submitButton	
  =	
  driver.FindElement(By.Name("submit"));	
  
	
  	
  submitButton.Click();	
  
	
  }	
  
}	
  
	
  
	
  
©2015 Eid Passport, Inc. All rights reserved.
Login Test Case
	
  var	
  loginPage	
  =	
  new	
  LoginPage();	
  
	
  loginPage.Login("user","pass");	
  
	
  
	
  
6/2/15	
  
13	
  
©2015 Eid Passport, Inc. All rights reserved.
Verify your assumptions….
Are you where you think you are?
Verify page elements on transitions
Clicked links
Form submission
AJAX transitions
©2015 Eid Passport, Inc. All rights reserved.
Be Generous with your logging
Overlogging is better than underlogging
Easier to examine output files to see where
failures are occurring
Especially true for remote execution
Use logging to get a trail on most events
6/2/15	
  
14	
  
©2015 Eid Passport, Inc. All rights reserved.
Things I like to log
URL of the page
Timestamp
Values used on assertions
Values used on comparators
Values used on loops
©2015 Eid Passport, Inc. All rights reserved.
IE Considerations
Sometimes click appears to do “nothing”
Use SendKeys instead of Click
https://www.google.com/webhp?q=ie+click
+selenium
6/2/15	
  
15	
  
©2015 Eid Passport, Inc. All rights reserved.
SendKeys Code
Instead of
button.Click();	
  
	
  
Use
button.SendKeys(Keys.Enter);	
  
©2015 Eid Passport, Inc. All rights reserved.
Handling Frames
Be sure to set the focus to the frame hosting your
elements.
IWebElement	
  mainFrame	
  =	
  
driver.FindElement(By.Name("MainFrame"));	
  
	
  
driver.SwitchTo().Frame(mainFrame);	
  
6/2/15	
  
16	
  
©2015 Eid Passport, Inc. All rights reserved.
Handling Dialogs
Javascript alerts
Javascript confirm
Javascript prompts
	
  
©2015 Eid Passport, Inc. All rights reserved.
Example code
try	
  {	
  
	
   	
  driver.SwitchTo().Alert();	
  
	
   	
  return	
  true;	
  
	
  }	
  
	
  catch	
  (NoAlertPresentException) 	
  {	
  
	
   	
  //	
  Modal	
  dialog	
  is	
  not	
  displayed	
  
	
   	
  return	
  false;	
  
	
  }	
  
	
  
	
  
6/2/15	
  
17	
  
©2015 Eid Passport, Inc. All rights reserved.
Handling Popup windows
var	
  windowHandles	
  =	
  driver.WindowHandles;	
  
	
  
//	
  if	
  handle	
  0	
  is	
  the	
  main	
  window	
  then	
  handle	
  1	
  	
  
//	
  is	
  the	
  popup,	
  otherwise	
  the	
  popup	
  is	
  handle	
  0	
  
var	
  popUp	
  =	
  (windowHandles[0]	
  ==	
  
	
  	
  mainWindowHandle	
  ?	
  windowHandles[1]	
  :	
  	
  
	
  	
  windowHandles[0]);	
  
	
  
driver.SwitchTo().Window(popUp);	
  
<do	
  stuff>	
  
driver.SwitchTo().Window(mainWindowHandle);	
  
	
  
	
  
	
  
©2015 Eid Passport, Inc. All rights reserved.
Not the only answer...
Sometimes Selenium can’t do the job.
AutoIt can be used as a fall-back.
https://www.autoitscript.com/site/autoit/
6/2/15	
  
18	
  
©2015 Eid Passport, Inc. All rights reserved.
Browser login prompts
©2015 Eid Passport, Inc. All rights reserved.
Advanced Topics
Use with Continuous Integration tools
Remote control of tests
Selenium Grid
6/2/15	
  
19	
  
©2015 Eid Passport, Inc. All rights reserved.
Summary
Instrument your framework correctly and Selenium
tests can be very good for you
Don’t be discouraged. Try different things.
Investigate to see what Selenium can do for you
©2015 Eid Passport, Inc. All rights reserved.
The End
38
Enjoy the journey
and
Have fun!
6/2/15	
  
20	
  
©2015 Eid Passport, Inc. All rights reserved.
Thank you!
39
Questions/Comments?
Contact Info:
Alan Ark
aark@eidpassport.com
http://www.linkedin.com/in/arkie

More Related Content

What's hot

Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"IT Event
 
Vuejs for Angular developers
Vuejs for Angular developersVuejs for Angular developers
Vuejs for Angular developersMikhail Kuznetcov
 
Fast prototyping apps using AngularJS, RequireJS and Twitter Bootstrap
Fast prototyping apps using AngularJS, RequireJS and Twitter BootstrapFast prototyping apps using AngularJS, RequireJS and Twitter Bootstrap
Fast prototyping apps using AngularJS, RequireJS and Twitter BootstrapYuriy Silvestrov
 
State of the resource timing api
State of the resource timing apiState of the resource timing api
State of the resource timing apiAaron Peters
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoJuliano Martins
 
Beyond DOM Manipulations: Building Stateful Modules with Events and Promises
Beyond DOM Manipulations: Building Stateful Modules with Events and PromisesBeyond DOM Manipulations: Building Stateful Modules with Events and Promises
Beyond DOM Manipulations: Building Stateful Modules with Events and PromisesCrashlytics
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)Steve Souders
 
Introduction to Using PHP & MVC Frameworks
Introduction to Using PHP & MVC FrameworksIntroduction to Using PHP & MVC Frameworks
Introduction to Using PHP & MVC FrameworksGerald Krishnan
 
Building web apps with Vaadin 8
Building web apps with Vaadin 8 Building web apps with Vaadin 8
Building web apps with Vaadin 8 Marcus Hellberg
 
Node.js Authentication and Data Security
Node.js Authentication and Data SecurityNode.js Authentication and Data Security
Node.js Authentication and Data SecurityTim Messerschmidt
 

What's hot (17)

Vaadin Components
Vaadin ComponentsVaadin Components
Vaadin Components
 
Vaadin 8 and 10
Vaadin 8 and 10Vaadin 8 and 10
Vaadin 8 and 10
 
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
Sara Harkousse - "Web Components: It's all rainbows and unicorns! Is it?"
 
Vuejs for Angular developers
Vuejs for Angular developersVuejs for Angular developers
Vuejs for Angular developers
 
Fast prototyping apps using AngularJS, RequireJS and Twitter Bootstrap
Fast prototyping apps using AngularJS, RequireJS and Twitter BootstrapFast prototyping apps using AngularJS, RequireJS and Twitter Bootstrap
Fast prototyping apps using AngularJS, RequireJS and Twitter Bootstrap
 
State of the resource timing api
State of the resource timing apiState of the resource timing api
State of the resource timing api
 
Desenvolvimento Mobile Híbrido
Desenvolvimento Mobile HíbridoDesenvolvimento Mobile Híbrido
Desenvolvimento Mobile Híbrido
 
Beyond DOM Manipulations: Building Stateful Modules with Events and Promises
Beyond DOM Manipulations: Building Stateful Modules with Events and PromisesBeyond DOM Manipulations: Building Stateful Modules with Events and Promises
Beyond DOM Manipulations: Building Stateful Modules with Events and Promises
 
Html5
Html5Html5
Html5
 
AngularJS at PyVo
AngularJS at PyVoAngularJS at PyVo
AngularJS at PyVo
 
JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)JavaScript Performance (at SFJS)
JavaScript Performance (at SFJS)
 
Jsfsunum
JsfsunumJsfsunum
Jsfsunum
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
Introduction to Using PHP & MVC Frameworks
Introduction to Using PHP & MVC FrameworksIntroduction to Using PHP & MVC Frameworks
Introduction to Using PHP & MVC Frameworks
 
Building web apps with Vaadin 8
Building web apps with Vaadin 8 Building web apps with Vaadin 8
Building web apps with Vaadin 8
 
Facelets
FaceletsFacelets
Facelets
 
Node.js Authentication and Data Security
Node.js Authentication and Data SecurityNode.js Authentication and Data Security
Node.js Authentication and Data Security
 

Viewers also liked

Build the Right Product Right: Transitioning Test from Critiquing to Defining
Build the Right Product Right: Transitioning Test from Critiquing to DefiningBuild the Right Product Right: Transitioning Test from Critiquing to Defining
Build the Right Product Right: Transitioning Test from Critiquing to DefiningTechWell
 
Create Brainstorming Commandos for Creative Problem Solving
Create Brainstorming Commandos for Creative Problem SolvingCreate Brainstorming Commandos for Creative Problem Solving
Create Brainstorming Commandos for Creative Problem SolvingTechWell
 
Power Your Teams with Git
Power Your Teams with GitPower Your Teams with Git
Power Your Teams with GitTechWell
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical DebtTechWell
 
Now That We're Agile, What's a Manager to Do?
Now That We're Agile, What's a Manager to Do?Now That We're Agile, What's a Manager to Do?
Now That We're Agile, What's a Manager to Do?TechWell
 
Implementing Agile in an FDA Regulated Environment
Implementing Agile in an FDA Regulated EnvironmentImplementing Agile in an FDA Regulated Environment
Implementing Agile in an FDA Regulated EnvironmentTechWell
 
Agile Hacks: Creative Solutions for Common Agile Issues
Agile Hacks: Creative Solutions for Common Agile IssuesAgile Hacks: Creative Solutions for Common Agile Issues
Agile Hacks: Creative Solutions for Common Agile IssuesTechWell
 
Using DevOps to Drive the Agile ALM
Using DevOps to Drive the Agile ALMUsing DevOps to Drive the Agile ALM
Using DevOps to Drive the Agile ALMTechWell
 
The Adventures of a First-Time Test Lead: An Unexpected Journey
The Adventures of a First-Time Test Lead: An Unexpected JourneyThe Adventures of a First-Time Test Lead: An Unexpected Journey
The Adventures of a First-Time Test Lead: An Unexpected JourneyTechWell
 
Privacy and Data Security: Minimizing Reputational and Legal Risks
Privacy and Data Security: Minimizing Reputational and Legal RisksPrivacy and Data Security: Minimizing Reputational and Legal Risks
Privacy and Data Security: Minimizing Reputational and Legal RisksTechWell
 
Large-Scale Agile Test Automation Strategies in Practice
Large-Scale Agile Test Automation Strategies in PracticeLarge-Scale Agile Test Automation Strategies in Practice
Large-Scale Agile Test Automation Strategies in PracticeTechWell
 
The Issues Agile Exposes and What To Do about Them
The Issues Agile Exposes and What To Do about ThemThe Issues Agile Exposes and What To Do about Them
The Issues Agile Exposes and What To Do about ThemTechWell
 
Managing a Software Engineering Team
Managing a Software Engineering TeamManaging a Software Engineering Team
Managing a Software Engineering TeamTechWell
 
Use Business Analysts for User Interface Design
Use Business Analysts for User Interface DesignUse Business Analysts for User Interface Design
Use Business Analysts for User Interface DesignTechWell
 
Testing in a Super-Agile Software Development Environment
Testing in a Super-Agile Software Development EnvironmentTesting in a Super-Agile Software Development Environment
Testing in a Super-Agile Software Development EnvironmentTechWell
 
Developing a Rugged DevOps Approach to Cloud Security
Developing a Rugged DevOps Approach to Cloud SecurityDeveloping a Rugged DevOps Approach to Cloud Security
Developing a Rugged DevOps Approach to Cloud SecurityTechWell
 
From Unclear and Unrealistic Requirements to Achievable User Stories
From Unclear and Unrealistic Requirements to Achievable User StoriesFrom Unclear and Unrealistic Requirements to Achievable User Stories
From Unclear and Unrealistic Requirements to Achievable User StoriesTechWell
 

Viewers also liked (17)

Build the Right Product Right: Transitioning Test from Critiquing to Defining
Build the Right Product Right: Transitioning Test from Critiquing to DefiningBuild the Right Product Right: Transitioning Test from Critiquing to Defining
Build the Right Product Right: Transitioning Test from Critiquing to Defining
 
Create Brainstorming Commandos for Creative Problem Solving
Create Brainstorming Commandos for Creative Problem SolvingCreate Brainstorming Commandos for Creative Problem Solving
Create Brainstorming Commandos for Creative Problem Solving
 
Power Your Teams with Git
Power Your Teams with GitPower Your Teams with Git
Power Your Teams with Git
 
Managing Technical Debt
Managing Technical DebtManaging Technical Debt
Managing Technical Debt
 
Now That We're Agile, What's a Manager to Do?
Now That We're Agile, What's a Manager to Do?Now That We're Agile, What's a Manager to Do?
Now That We're Agile, What's a Manager to Do?
 
Implementing Agile in an FDA Regulated Environment
Implementing Agile in an FDA Regulated EnvironmentImplementing Agile in an FDA Regulated Environment
Implementing Agile in an FDA Regulated Environment
 
Agile Hacks: Creative Solutions for Common Agile Issues
Agile Hacks: Creative Solutions for Common Agile IssuesAgile Hacks: Creative Solutions for Common Agile Issues
Agile Hacks: Creative Solutions for Common Agile Issues
 
Using DevOps to Drive the Agile ALM
Using DevOps to Drive the Agile ALMUsing DevOps to Drive the Agile ALM
Using DevOps to Drive the Agile ALM
 
The Adventures of a First-Time Test Lead: An Unexpected Journey
The Adventures of a First-Time Test Lead: An Unexpected JourneyThe Adventures of a First-Time Test Lead: An Unexpected Journey
The Adventures of a First-Time Test Lead: An Unexpected Journey
 
Privacy and Data Security: Minimizing Reputational and Legal Risks
Privacy and Data Security: Minimizing Reputational and Legal RisksPrivacy and Data Security: Minimizing Reputational and Legal Risks
Privacy and Data Security: Minimizing Reputational and Legal Risks
 
Large-Scale Agile Test Automation Strategies in Practice
Large-Scale Agile Test Automation Strategies in PracticeLarge-Scale Agile Test Automation Strategies in Practice
Large-Scale Agile Test Automation Strategies in Practice
 
The Issues Agile Exposes and What To Do about Them
The Issues Agile Exposes and What To Do about ThemThe Issues Agile Exposes and What To Do about Them
The Issues Agile Exposes and What To Do about Them
 
Managing a Software Engineering Team
Managing a Software Engineering TeamManaging a Software Engineering Team
Managing a Software Engineering Team
 
Use Business Analysts for User Interface Design
Use Business Analysts for User Interface DesignUse Business Analysts for User Interface Design
Use Business Analysts for User Interface Design
 
Testing in a Super-Agile Software Development Environment
Testing in a Super-Agile Software Development EnvironmentTesting in a Super-Agile Software Development Environment
Testing in a Super-Agile Software Development Environment
 
Developing a Rugged DevOps Approach to Cloud Security
Developing a Rugged DevOps Approach to Cloud SecurityDeveloping a Rugged DevOps Approach to Cloud Security
Developing a Rugged DevOps Approach to Cloud Security
 
From Unclear and Unrealistic Requirements to Achievable User Stories
From Unclear and Unrealistic Requirements to Achievable User StoriesFrom Unclear and Unrealistic Requirements to Achievable User Stories
From Unclear and Unrealistic Requirements to Achievable User Stories
 

Similar to Prevent Test Automation Shelfware: A Selenium-WebDriver Case Study

Visual AI Testing Using Applitools
Visual AI Testing Using ApplitoolsVisual AI Testing Using Applitools
Visual AI Testing Using ApplitoolsMikhail Laptev
 
Breaking free from static abuse in test automation frameworks and using Sprin...
Breaking free from static abuse in test automation frameworks and using Sprin...Breaking free from static abuse in test automation frameworks and using Sprin...
Breaking free from static abuse in test automation frameworks and using Sprin...Abhijeet Vaikar
 
Don't get stung - an introduction to the OWASP Top 10
Don't get stung - an introduction to the OWASP Top 10Don't get stung - an introduction to the OWASP Top 10
Don't get stung - an introduction to the OWASP Top 10Barry Dorrans
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsSami Ekblad
 
Android the Agile way
Android the Agile wayAndroid the Agile way
Android the Agile wayAshwin Raghav
 
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and BeyondWebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyondmguillem
 
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Iakiv Kramarenko
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerJustin Edelson
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Managerconnectwebex
 
TWISummit 2019 - Take the Pain out of Browser Automation!
TWISummit 2019 - Take the Pain out of Browser Automation!TWISummit 2019 - Take the Pain out of Browser Automation!
TWISummit 2019 - Take the Pain out of Browser Automation!Thoughtworks
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVCMaarten Balliauw
 
Hands On with Selenium and WebDriver
Hands On with Selenium and WebDriverHands On with Selenium and WebDriver
Hands On with Selenium and WebDriverTechWell
 
Moving applications to the cloud
Moving applications to the cloudMoving applications to the cloud
Moving applications to the cloudSergejus Barinovas
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Mahmoud Hamed Mahmoud
 
Java Web Application Security - Denver JUG 2013
Java Web Application Security - Denver JUG 2013Java Web Application Security - Denver JUG 2013
Java Web Application Security - Denver JUG 2013Matt Raible
 
Play! Framework for JavaEE Developers
Play! Framework for JavaEE DevelopersPlay! Framework for JavaEE Developers
Play! Framework for JavaEE DevelopersTeng Shiu Huang
 
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegelermfrancis
 

Similar to Prevent Test Automation Shelfware: A Selenium-WebDriver Case Study (20)

Visual AI Testing Using Applitools
Visual AI Testing Using ApplitoolsVisual AI Testing Using Applitools
Visual AI Testing Using Applitools
 
Breaking free from static abuse in test automation frameworks and using Sprin...
Breaking free from static abuse in test automation frameworks and using Sprin...Breaking free from static abuse in test automation frameworks and using Sprin...
Breaking free from static abuse in test automation frameworks and using Sprin...
 
Don't get stung - an introduction to the OWASP Top 10
Don't get stung - an introduction to the OWASP Top 10Don't get stung - an introduction to the OWASP Top 10
Don't get stung - an introduction to the OWASP Top 10
 
Workshop: Building Vaadin add-ons
Workshop: Building Vaadin add-onsWorkshop: Building Vaadin add-ons
Workshop: Building Vaadin add-ons
 
Android the Agile way
Android the Agile wayAndroid the Agile way
Android the Agile way
 
Node.js primer
Node.js primerNode.js primer
Node.js primer
 
Node.js Workshop
Node.js WorkshopNode.js Workshop
Node.js Workshop
 
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and BeyondWebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
WebTest - Efficient Functional Web Testing with HtmlUnit and Beyond
 
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
Three Simple Chords of Alternative PageObjects and Hardcore of LoadableCompon...
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Manager
 
Building Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience ManagerBuilding Creative Product Extensions with Experience Manager
Building Creative Product Extensions with Experience Manager
 
Sst hackathon express
Sst hackathon expressSst hackathon express
Sst hackathon express
 
TWISummit 2019 - Take the Pain out of Browser Automation!
TWISummit 2019 - Take the Pain out of Browser Automation!TWISummit 2019 - Take the Pain out of Browser Automation!
TWISummit 2019 - Take the Pain out of Browser Automation!
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
 
Hands On with Selenium and WebDriver
Hands On with Selenium and WebDriverHands On with Selenium and WebDriver
Hands On with Selenium and WebDriver
 
Moving applications to the cloud
Moving applications to the cloudMoving applications to the cloud
Moving applications to the cloud
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Java Web Application Security - Denver JUG 2013
Java Web Application Security - Denver JUG 2013Java Web Application Security - Denver JUG 2013
Java Web Application Security - Denver JUG 2013
 
Play! Framework for JavaEE Developers
Play! Framework for JavaEE DevelopersPlay! Framework for JavaEE Developers
Play! Framework for JavaEE Developers
 
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten ZiegelerOSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
OSGi Enterprise R6 specs are out! - David Bosschaert & Carsten Ziegeler
 

More from TechWell

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and RecoveringTechWell
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization TechWell
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTechWell
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartTechWell
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyTechWell
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTechWell
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowTechWell
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityTechWell
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyTechWell
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTechWell
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipTechWell
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsTechWell
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GameTechWell
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsTechWell
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationTechWell
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessTechWell
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateTechWell
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessTechWell
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTechWell
 

More from TechWell (20)

Failing and Recovering
Failing and RecoveringFailing and Recovering
Failing and Recovering
 
Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization Instill a DevOps Testing Culture in Your Team and Organization
Instill a DevOps Testing Culture in Your Team and Organization
 
Test Design for Fully Automated Build Architecture
Test Design for Fully Automated Build ArchitectureTest Design for Fully Automated Build Architecture
Test Design for Fully Automated Build Architecture
 
System-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good StartSystem-Level Test Automation: Ensuring a Good Start
System-Level Test Automation: Ensuring a Good Start
 
Build Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test StrategyBuild Your Mobile App Quality and Test Strategy
Build Your Mobile App Quality and Test Strategy
 
Testing Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for SuccessTesting Transformation: The Art and Science for Success
Testing Transformation: The Art and Science for Success
 
Implement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlowImplement BDD with Cucumber and SpecFlow
Implement BDD with Cucumber and SpecFlow
 
Develop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your SanityDevelop WebDriver Automated Tests—and Keep Your Sanity
Develop WebDriver Automated Tests—and Keep Your Sanity
 
Ma 15
Ma 15Ma 15
Ma 15
 
Eliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps StrategyEliminate Cloud Waste with a Holistic DevOps Strategy
Eliminate Cloud Waste with a Holistic DevOps Strategy
 
Transform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOpsTransform Test Organizations for the New World of DevOps
Transform Test Organizations for the New World of DevOps
 
The Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—LeadershipThe Fourth Constraint in Project Delivery—Leadership
The Fourth Constraint in Project Delivery—Leadership
 
Resolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile TeamsResolve the Contradiction of Specialists within Agile Teams
Resolve the Contradiction of Specialists within Agile Teams
 
Pin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile GamePin the Tail on the Metric: A Field-Tested Agile Game
Pin the Tail on the Metric: A Field-Tested Agile Game
 
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile TeamsAgile Performance Holarchy (APH)—A Model for Scaling Agile Teams
Agile Performance Holarchy (APH)—A Model for Scaling Agile Teams
 
A Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps ImplementationA Business-First Approach to DevOps Implementation
A Business-First Approach to DevOps Implementation
 
Databases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery ProcessDatabases in a Continuous Integration/Delivery Process
Databases in a Continuous Integration/Delivery Process
 
Mobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to AutomateMobile Testing: What—and What Not—to Automate
Mobile Testing: What—and What Not—to Automate
 
Cultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for SuccessCultural Intelligence: A Key Skill for Success
Cultural Intelligence: A Key Skill for Success
 
Turn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile TransformationTurn the Lights On: A Power Utility Company's Agile Transformation
Turn the Lights On: A Power Utility Company's Agile Transformation
 

Recently uploaded

WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2
 
WSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2
 
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next IntegrationWSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next IntegrationWSO2
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2
 
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2
 
WSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...WSO2
 

Recently uploaded (20)

WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
 
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and ApplicationsWSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
WSO2CON 2024 - Architecting AI in the Enterprise: APIs and Applications
 
WSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid Environments
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
WSO2Con2024 - From Blueprint to Brilliance: WSO2's Guide to API-First Enginee...
 
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next IntegrationWSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
 
WSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AIWSO2CON 2024 Slides - Unlocking Value with AI
WSO2CON 2024 Slides - Unlocking Value with AI
 
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
WSO2Con2024 - Navigating the Digital Landscape: Transforming Healthcare with ...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration Tooling
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
WSO2Con2024 - Simplified Integration: Unveiling the Latest Features in WSO2 L...
 

Prevent Test Automation Shelfware: A Selenium-WebDriver Case Study

  • 1. 6/2/15   1   ©2015 Eid Passport, Inc. All rights reserved.©2015 Eid Passport, Inc. All rights reserved. How to Prevent Test Automation Shelfware: A Selenium-WebDriver Case Study Alan Ark aark@eidpassport.com http://www.linkedin.com/in/arkie ©2015 Eid Passport, Inc. All rights reserved. Goals 2 Introduction to Selenium Tips and Tricks Pitfalls to Avoid Ask questions as we go!
  • 2. 6/2/15   2   ©2015 Eid Passport, Inc. All rights reserved. Watir? Web Application Testing in Ruby A different open source project that drives browsers for test automation ©2015 Eid Passport, Inc. All rights reserved. What is Selenium? A tool to automate browsers! Quick regression testing across many browsers Automate web based admin tasks
  • 3. 6/2/15   3   ©2015 Eid Passport, Inc. All rights reserved. Why Selenium over Watir? Choice More widely supported More bindings available ©2015 Eid Passport, Inc. All rights reserved. Regression testing! Repetitive test efforts Time consuming Reproducible tests across many browsers
  • 4. 6/2/15   4   ©2015 Eid Passport, Inc. All rights reserved. Automation of web based admin tasks! Creation of data Reading of records on the browser Updating of content Deletion of records ©2015 Eid Passport, Inc. All rights reserved. What version of Selenium? Don’t use Selenium 1.0 - Selenium IDE Recorder is deprecated Javascript Injection to drive a browser Selenium 2 uses WebDriver http://docs.seleniumhq.org/projects/webdriver/
  • 5. 6/2/15   5   ©2015 Eid Passport, Inc. All rights reserved. WebDriver? A platform and language-neutral interface that allows programs or scripts to introspect into, and control the behaviour of, a web browser http://www.w3.org/TR/2013/WD- webdriver-20130117/ ©2015 Eid Passport, Inc. All rights reserved. How do I start? Pick a language! Java C# python ruby others supported as well
  • 6. 6/2/15   6   ©2015 Eid Passport, Inc. All rights reserved. Pick your browser/driver Firefox Chrome IE Safari many more! ©2015 Eid Passport, Inc. All rights reserved. How do I interact with the browser? Dev tools are built-in to browsers Inspect the HTML to glean the locators to use var  inputElement  =      driver.FindElement(By.Name("myButton"));     inputElement.Click();  
  • 7. 6/2/15   7   ©2015 Eid Passport, Inc. All rights reserved. Built-in locators Use these if you can driver.FindElement(By.Name("myName"));   driver.FindElement(By.Id("myId"));   driver.FindElement(By.ClassName("myClass"));   others as well     ©2015 Eid Passport, Inc. All rights reserved. XPath vs. CSS XPath //div[.  ='Some  Text  of  the  Div']     CSS  table[id='tblBadgeInfo']  thead  td     Speed considerations?
  • 8. 6/2/15   8   ©2015 Eid Passport, Inc. All rights reserved. Tips to avoid headaches…. GUI based tests sometimes thought of as fragile, brittle or unreliable How to prevent your Selenium automation from becoming shelfware ©2015 Eid Passport, Inc. All rights reserved. Use unique locators Very difficult if locators are not unique Avoid using index numbers Ask for some name/id/class on UI elements from the development team
  • 9. 6/2/15   9   ©2015 Eid Passport, Inc. All rights reserved. Do not use hard coded sleeps Makes test scripts brittle when run on different environments.   //  Sleep  for  5  seconds   Thread.Sleep(5000);         button.Click();   ©2015 Eid Passport, Inc. All rights reserved. Use a polling wait Be flexible and return as soon as possible but ignore exceptions
  • 10. 6/2/15   10   ©2015 Eid Passport, Inc. All rights reserved. Use WebDriverWait WebDriverWait  wait  =  new  WebDriverWait(driver,   TimeSpan.FromSeconds(30));     IWebElement  myDynamicElement  =   wait.Until<IWebElement>((d)  =>          {                  return  d.FindElement(By.Id("myButtonId"));          });   ©2015 Eid Passport, Inc. All rights reserved. Use ExpectedConditions Convenience methods on things that are checked often. Use these with WebDriverWait. http://selenium.googlecode.com/git/docs/api/ dotnet/html/ AllMembers_T_OpenQA_Selenium_Support_UI_E xpectedConditions.htm
  • 11. 6/2/15   11   ©2015 Eid Passport, Inc. All rights reserved. Use Page Objects Isolate UI elements from the test cases If the UI changes, your tests only need to be modified in a single place - the Page Object that defines the UI Reduces duplicate code ©2015 Eid Passport, Inc. All rights reserved. Login Page Example
  • 12. 6/2/15   12   ©2015 Eid Passport, Inc. All rights reserved. Login Page Object class  LoginPage  :  BasePage  {      public  LoginPage()  {}      public  void  Login(string  username,string  password)  {      var  nameElement  =  driver.FindElement(By.Name("username"));      nameElement.SendKeys(username);        var  passElement  =  driver.FindElement(By.Name("password"));      passElement.SendKeys(password);        var  submitButton  =  driver.FindElement(By.Name("submit"));      submitButton.Click();    }   }       ©2015 Eid Passport, Inc. All rights reserved. Login Test Case  var  loginPage  =  new  LoginPage();    loginPage.Login("user","pass");      
  • 13. 6/2/15   13   ©2015 Eid Passport, Inc. All rights reserved. Verify your assumptions…. Are you where you think you are? Verify page elements on transitions Clicked links Form submission AJAX transitions ©2015 Eid Passport, Inc. All rights reserved. Be Generous with your logging Overlogging is better than underlogging Easier to examine output files to see where failures are occurring Especially true for remote execution Use logging to get a trail on most events
  • 14. 6/2/15   14   ©2015 Eid Passport, Inc. All rights reserved. Things I like to log URL of the page Timestamp Values used on assertions Values used on comparators Values used on loops ©2015 Eid Passport, Inc. All rights reserved. IE Considerations Sometimes click appears to do “nothing” Use SendKeys instead of Click https://www.google.com/webhp?q=ie+click +selenium
  • 15. 6/2/15   15   ©2015 Eid Passport, Inc. All rights reserved. SendKeys Code Instead of button.Click();     Use button.SendKeys(Keys.Enter);   ©2015 Eid Passport, Inc. All rights reserved. Handling Frames Be sure to set the focus to the frame hosting your elements. IWebElement  mainFrame  =   driver.FindElement(By.Name("MainFrame"));     driver.SwitchTo().Frame(mainFrame);  
  • 16. 6/2/15   16   ©2015 Eid Passport, Inc. All rights reserved. Handling Dialogs Javascript alerts Javascript confirm Javascript prompts   ©2015 Eid Passport, Inc. All rights reserved. Example code try  {      driver.SwitchTo().Alert();      return  true;    }    catch  (NoAlertPresentException)  {      //  Modal  dialog  is  not  displayed      return  false;    }      
  • 17. 6/2/15   17   ©2015 Eid Passport, Inc. All rights reserved. Handling Popup windows var  windowHandles  =  driver.WindowHandles;     //  if  handle  0  is  the  main  window  then  handle  1     //  is  the  popup,  otherwise  the  popup  is  handle  0   var  popUp  =  (windowHandles[0]  ==      mainWindowHandle  ?  windowHandles[1]  :        windowHandles[0]);     driver.SwitchTo().Window(popUp);   <do  stuff>   driver.SwitchTo().Window(mainWindowHandle);         ©2015 Eid Passport, Inc. All rights reserved. Not the only answer... Sometimes Selenium can’t do the job. AutoIt can be used as a fall-back. https://www.autoitscript.com/site/autoit/
  • 18. 6/2/15   18   ©2015 Eid Passport, Inc. All rights reserved. Browser login prompts ©2015 Eid Passport, Inc. All rights reserved. Advanced Topics Use with Continuous Integration tools Remote control of tests Selenium Grid
  • 19. 6/2/15   19   ©2015 Eid Passport, Inc. All rights reserved. Summary Instrument your framework correctly and Selenium tests can be very good for you Don’t be discouraged. Try different things. Investigate to see what Selenium can do for you ©2015 Eid Passport, Inc. All rights reserved. The End 38 Enjoy the journey and Have fun!
  • 20. 6/2/15   20   ©2015 Eid Passport, Inc. All rights reserved. Thank you! 39 Questions/Comments? Contact Info: Alan Ark aark@eidpassport.com http://www.linkedin.com/in/arkie