mastering test automation: how to use selenium successfully
TRANSCRIPT
![Page 1: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/1.jpg)
How To Use Selenium, Successfully
by Dave Haeffner, @TourDeDave
![Page 2: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/2.jpg)
http://www.wpclipart.com/geography/features/chasm.png.html
![Page 3: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/3.jpg)
http://en.wikipedia.org/wiki/Optimal_solutions_for_Rubik's_Cube
![Page 4: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/4.jpg)
Write business valuable tests that are reusable, maintainable and resilient across all relevant browsers.
Then package and scale them for you & your team.
![Page 5: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/5.jpg)
Selenium Overview
• What it is — the Reader’s Digest version
• What it is and is not good at
• IDE vs. Local vs. Remote
• Slow, brittle, and hard to maintain?
![Page 6: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/6.jpg)
Step 1 Define a Test Strategy
![Page 7: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/7.jpg)
Test Strategy1. How does your business make money?
2. What features of your application are being used?
3. What browsers are your users using?
4. What things have broken in the app before?
Outcome: - What features to test - Which browsers to care about
![Page 8: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/8.jpg)
Step 2 Pick a Programming
Language
![Page 9: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/9.jpg)
Programming Language
• Same language as the app?
• Who will own it?
• Build a framework or use an existing one?
• http://se.tips/seleniumframeworks
![Page 10: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/10.jpg)
Step 3 Use Selenium fundamentals
![Page 11: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/11.jpg)
Selenium Fundamentals
• Mimics human action
• Uses a few common actions
• Works with “locators”
Locators tell Selenium which HTML element to interact with
![Page 12: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/12.jpg)
Common Actions
• get();
• findElement();
• click(); //or submit();
• sendKeys();
• isDisplayed();
![Page 13: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/13.jpg)
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
![Page 14: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/14.jpg)
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
![Page 15: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/15.jpg)
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
![Page 16: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/16.jpg)
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 (with care)
![Page 17: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/17.jpg)
Locator Strategies• Class
• CSS selectors
• ID
• Link Text
• Partial Link Text
• Tag Name
• XPath
CSS vs XPath http://se.tips/seleniumbenchmarkshttp://se.tips/cssxpathexamples
![Page 18: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/18.jpg)
Finding Quality Locators• Inspect the page
• Verify your selection
• e.g., FirePath or FireFinder
• http://se.tips/verifyinglocators
• e.g., JavaScript console with $$(‘’); or $(‘’);
• Learn through gaming
• http://se.tips/locatorgame
• Conversation
![Page 19: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/19.jpg)
![Page 20: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/20.jpg)
Step 4 Write your first test
![Page 21: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/21.jpg)
Good Test Anatomy
• Write for BDD or xUnit test framework
• Test one thing (atomic)
• Each test can be run independently (autonomous)
• Anyone can understand what it is doing
• Group similar tests together
![Page 22: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/22.jpg)
A Login Example
1. Visit the login form
2. Find the login form’s username field and input text
3. Find the login form’s password field and input text
4. Find the submit button and click it
1. or, find the form and submit it
![Page 24: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/24.jpg)
![Page 25: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/25.jpg)
![Page 26: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/26.jpg)
Now to find an assertion
1. Login
2. Inspect the page
3. Find a locator
4. Verify it
5. Add it to the test
![Page 27: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/27.jpg)
![Page 28: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/28.jpg)
![Page 29: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/29.jpg)
A much better assertion
![Page 30: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/30.jpg)
Automated Visual Testing Primer
• Check that an application’s UI appears correctly
• Can also be used to verify content
• Hundreds of assertions for a few lines of code
• Open-source libraries, baseline image comparison, and inherent challenges
http://se.tips/visual-testing-getting-started
![Page 31: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/31.jpg)
In pom.xml
![Page 32: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/32.jpg)
![Page 33: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/33.jpg)
![Page 34: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/34.jpg)
![Page 35: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/35.jpg)
![Page 36: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/36.jpg)
![Page 37: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/37.jpg)
![Page 38: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/38.jpg)
Exception Handling• org.openqa.selenium.NoSuchElementException:
Unable to locate element: {"method":"css selector","selector":".flash.error"}
• Most common ones you’ll run into: NoSuchElement and StaleElementReferenceError
• A list of all WebDriver exceptions: http://se.tips/se-exceptions-java
![Page 40: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/40.jpg)
Step 5 Write reusable and
maintainable test code
![Page 41: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/41.jpg)
Page Objects
![Page 42: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/42.jpg)
Application Under Test
Test 1 Test 2 Test 3 Test 4 Test 5Test 1 Test 2 Test 3 Test 4 Test 5
Need to update EVERY test :-(
![Page 43: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/43.jpg)
Page Object(s)
Application Under Test
Test 1 Test 2 Test 3 Test 4 Test 5
Need to update JUST the page object :-D
![Page 44: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/44.jpg)
Let’s look at a page object for login
![Page 45: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/45.jpg)
![Page 46: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/46.jpg)
And here’s what the test looks like when using it
![Page 47: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/47.jpg)
Page object helpers: http://se.tips/po-html-elementshttp://se.tips/po-page-factory
![Page 48: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/48.jpg)
Base Page Objecta.k.a.
Selenium Wrapper Utility Class
etc.
![Page 49: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/49.jpg)
Selenium Commands
Page Object 1
Page Object 2
Page Object 3
Page Object 4
Page Object 5
![Page 50: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/50.jpg)
Base Page Object
Page Object 1
Page Object 2
Page Object 3
Page Object 4
Page Object 5
Selenium Commands
• Global reuse • More readable • Insulates you from
Selenium API changes http://se.tips/se-upgrade
![Page 51: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/51.jpg)
Let’s take a look at a Base Page Object
![Page 52: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/52.jpg)
![Page 53: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/53.jpg)
And here it is implemented
![Page 54: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/54.jpg)
![Page 55: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/55.jpg)
How everything fits together
Test TestTest
Page Object
Page Object
Base Page
Object
Tests use page objects
Page objects inherit the base page (utility) class
The base page object wraps your Selenium commands
![Page 56: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/56.jpg)
Step 6 Make your tests resilient
![Page 57: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/57.jpg)
Waiting
![Page 58: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/58.jpg)
Thread.sleep(); Implicit wait Explicit waits
![Page 59: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/59.jpg)
Thread.sleep(); Implicit wait Explicit waits
![Page 61: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/61.jpg)
Explicit Waits
• Specify an amount of time, and an action
• Selenium will try repeatedly until either:
• The action is completed, or
• The amount of time specified has been reached (and throw a timeout exception)
![Page 62: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/62.jpg)
![Page 63: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/63.jpg)
In the Base page object
![Page 64: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/64.jpg)
In the DynamicLoading page object
![Page 65: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/65.jpg)
Browser Timing Considerations
![Page 66: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/66.jpg)
Step 7 Prep for use
![Page 67: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/67.jpg)
Test Harness• Simple organizational structure
• Central setup and teardown
• Configurable at run-time (with sensible defaults)
• Reporting & Logging
• Parallelization
• Test Grouping
![Page 68: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/68.jpg)
Folder structure
![Page 70: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/70.jpg)
Simple config with defaults
Import config where it’s needed (e.g., base test, etc.)
![Page 71: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/71.jpg)
Reporting & Logging
• Machine readablee.g., JUnit XML
• Human readable e.g., screenshots, failure message, stack trace
Fantastic Test Report Tool http://bit.ly/se-reporter (Allure Framework)
![Page 72: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/72.jpg)
Parallelization• In code
• Through your test runner
• Through your Continuous Integration (CI) server
#protip Enforce random order execution of tests (turnkey in mvn-surefire)
Recommended approach: http://bit.ly/mvn-surefire
![Page 73: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/73.jpg)
Test Grouping• Metadata (a.k.a. Categories)
• Enables “test packs”
• Some category ideas
• defect
• shallow & deep
• release or story number
More info: bit.ly/junit-categories
![Page 74: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/74.jpg)
Step 8 Add in cross-browser
execution
![Page 75: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/75.jpg)
Locallyhttp://se.tips/se-chromedriverhttp://se.tips/se-firefoxdriverhttp://se.tips/se-iedriverhttp://bit.ly/edge-driverhttp://se.tips/se-safaridriver
![Page 76: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/76.jpg)
Chrome
![Page 77: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/77.jpg)
Grid
Grid Hub
Browser
Tests
All done with the Selenium Standalone ServerJust requires additional runtime flags
Grid Node
Grid Node
Grid Node
Browser
Browser
![Page 78: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/78.jpg)
GridHub
Node(s)
![Page 79: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/79.jpg)
Grid
• http://se.tips/grid-getting-started• http://se.tips/se-grid-extras• http://se.tips/se-grid-scaler
![Page 80: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/80.jpg)
Sauce Labs
Sauce Labs BrowserTests
http://se.tips/sauce-getting-startedhttp://se.tips/sauce-with-applitools
![Page 81: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/81.jpg)
Step 9 Build an automated
feedback loop
![Page 82: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/82.jpg)
Feedback loops• The goal: Find failures early and often
• Done with continuous integration and notifications
• Notifications - remote: Email, chat, SMS- in-person: audio/visual indicators
![Page 83: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/83.jpg)
Code Committed
Unit/Integ. (pass?)
Deploy to autom. test
server (success?)
Run automated
tests (pass?)
Deploy to next env.
yes
yes
yes
Notify team if no
Code Promotion
Bonus points: stop the line
![Page 84: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/84.jpg)
Simple CI configuration1. Create a Job
2. Pull In Your Test Code
3. Set up Build Triggers
4. Configure Build steps
5. Configure Test Reports
6. Set up Notifications
7. Run Tests & View The Results
8. High-five your neighbor
![Page 85: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/85.jpg)
![Page 86: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/86.jpg)
Step 10 Find information on
your own
http://se.tips/selenium-resources
![Page 87: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/87.jpg)
Steps to solve the puzzle1. Define a Test Strategy
2. Pick a programming language
3. Use Selenium Fundamentals
4. Write Your First Test
5. Write re-usable and maintainable test code
6. Make your tests resilient
7. Package your tests into a framework
8. Add in cross-browser execution
9. Build an automated feedback loop
10. Find information on your own
![Page 88: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/88.jpg)
Write business valuable tests that are reusable, maintainable and resilient across all relevant browsers.
Then package them and scale them for you & your team.
![Page 89: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/89.jpg)
–Dave Haeffner
“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”
![Page 90: Mastering Test Automation: How to Use Selenium Successfully](https://reader030.vdocuments.us/reader030/viewer/2022020108/587f5af61a28ab0d378b73c1/html5/thumbnails/90.jpg)
1. Sign up for a free Applitools Eyes accounthttp://se.tips/applitools-free-account
2. Run your first visual test3. Email [email protected]. Sport your new “Visually Perfect” Tee
FREE t-shirt give-away
FREE sample of my book
• First 6 chapters available athttps://seleniumguidebook.com/#sample
• Available in Java and Ruby• JavaScript, C#, and Python coming SOON!