How to Use Selenium, Successfully

13,175 views

Published on

Sauce Labs hosted a Selenium bootcamp webinar with guest speaker Dave Haeffner. This presentation will give you a basis for the detail given in Dave's like titled E-book and get you started with Selenium.

Published in: Technology
2 Comments
16 Likes
Statistics
Notes
No Downloads
Views
Total views
13,175
On SlideShare
0
From Embeds
0
Number of Embeds
7,483
Actions
Shares
0
Downloads
172
Comments
2
Likes
16
Embeds 0
No embeds

No notes for slide

How to Use Selenium, Successfully

  1. 1. How To Use Selenium, Successfully by Dave Haeffner, @TourDeDave
  2. 2. http://www.wpclipart.com/geography/features/chasm.png.html
  3. 3. http://en.wikipedia.org/wiki/Optimal_solutions_for_Rubik's_Cube
  4. 4. 1. Preparation • Define a Test Strategy • Pick a Programming Language • Choose a Text Editor
  5. 5. On Defining a Test Strategy 1. How does your business make money? 2. How do your users user your application? 3. What browsers are your users using? 4. What things have broken before? Outcome: What to test and which browsers to care about
  6. 6. On Picking a Programming Language • Same language as the app? • Who will own it? • Build a framework or use an existing one? • http://bit.ly/seleniumframeworks • What about a scripting language?
  7. 7. On Choosing a Text Editor • Emacs • IntelliJ • Vim • Sublime Text
  8. 8. 2. Write Tests Well • Atomic • Autonomous • Descriptive • Small batches • For a test runner • Stored in Version Control
  9. 9. 3. Selenium Fundamentals • Mimics human action • Uses a few common actions • Works with “locators”
  10. 10. Locator Strategies • Class • CSS selectors • ID • Link Text • Partial Link Text • Tag Name • XPath Good locators are: • unique • descriptive • unlikely to change That rules a few of these out
  11. 11. Locator Strategies • Class • CSS selectors • ID • Link Text • Partial Link Text • Tag Name • XPath Good locators are: • unique • descriptive • unlikely to change That rules a few of these out
  12. 12. Locator Strategies • Class! • CSS selectors • ID! • Link Text • Partial Link Text • Tag Name • XPath Good locators are: • unique • descriptive • unlikely to change That rules a few of these out Start with IDs and Classes
  13. 13. Locator Strategies • Class! • CSS selectors! • ID! • Link Text • Partial Link Text • Tag Name • XPath Good locators are: • unique • descriptive • unlikely to change That rules a few of these out Start with IDs and Classes Use CSS or XPath sanely
  14. 14. Locator Strategies • Class! • CSS selectors! • ID! • Link Text • Partial Link Text • Tag Name • XPath CSS vs XPath http://bit.ly/seleniumbenchmarks http://bit.ly/cssxpathexamples
  15. 15. Finding Quality Locators • Inspect the page • Verify your selection • e.g., FirePath or FireFinder • http://bit.ly/verifyinglocators • Learn through gaming • http://bit.ly/locatorgame
  16. 16. Common Selenium actions • click • clear • send_keys • text • displayed? Look up your language’s bindings http://bit.ly/seleniumwiki
  17. 17. A Login Example 1. Visit the main page of a site 2. Find the login button and click it 3. Find the login form’s username field and input text 4. Find the login form’s password field and input text 5. Find the submit button and click it
  18. 18. http://the-internet.herokuapp.com/login
  19. 19. 4. Write Re-usable/ Maintainable Test Code • Page Object Pattern • Facade layer (a.k.a. Base Page Object)
  20. 20. 5. Make Your Tests Resilient
  21. 21. On explicit waits • Specify an amount of time, and an action • Selenium will try until either: • The action can be accomplished, or • The amount of time has been reached (and throw a timeout exception)
  22. 22. Added to base page Put to use in a page object
  23. 23. 6. Prepping for use (for humans and robots) • Central setup/teardown • Folder structure • Config file(s) • Tagging • Reporting (screenshots, JUnit XML, etc.) • Command-line execution wrapper
  24. 24. Central setup/teardown
  25. 25. A simple file/folder structure configs/ pages/ spec/ vendor/ Gemfile Rakefile
  26. 26. Tagging • Test packs • Some tagging ideas • wip • critical • component name • slow • story number What this looks like in RSpec http://bit.ly/rspectagging
  27. 27. Reporting • For robots: JUnit XML output • https://github.com/sj26/rspec_junit_formatter • For humans: screenshots, video, logs, etc.
  28. 28. 7. Scale It • Cloud execution • Parallelization • Continuous Integration
  29. 29. Cloud execution http://saucelabs.com
  30. 30. cloud_config.rb
  31. 31. spec_helper.rb
  32. 32. Parallelization (can be done) • In code • with threads: http://bit.ly/seleniumparallel1 • with processes: http://bit.ly/seleniumparallel2 • Through a test runner (e.g., TestNG in Java) • Through your CI server #protip enforce random order execution of tests
  33. 33. Continuous Integration • Feedback loops • Code promotion
  34. 34. Simple Jenkins configuration 1. Create a Job 2. Pull In Your Test Code 3. Set up Build Triggers 4. Configure Build steps 5. Configure Test Reports 6. Run Tests & View The Results Don’t forget about a systems check!
  35. 35. 1. Preparation 2. Write Tests Well 3. Understand Selenium Fundamentals 4. Write Reusable/Maintainable Test Code 5. Make Your Tests Resilient 6. Package For Use (for humans and robots) 7. Scale It For You & Your Team
  36. 36. –Dave Haeffner, @TourDeDave “You may think your puzzle is unique. But really, everyone is trying to solve the same puzzle. Yours is just configured differently — and it’s solvable”
  37. 37. http://seleniumguidebook.com
  38. 38. d http://elementalselenium.com

×