practical tips & tricks for selenium test automation
Post on 07-Jan-2017
5.581 Views
Preview:
TRANSCRIPT
Selenium Tips & Tricks
by Dave Haeffner
New to Selenium?
• Selenium Bootcamp http://se.tips/se-bootcamp
• Selenium Guidebook http://se.tips/se-guidebook
• Weekly Selenium Tips http://se.tips/se-weekly-tips
Headless
Benefits: - Speed - Maintenance - Screenshotting
http://se.tips/all-headless-browsers
Headless w/ Xvfbhttp://elementalselenium.com/tips/38-headless
Why use it?
Ideal for running small test suites on a headless machine e.g., a Continuous Integration (CI) Server
NOTE- display port collisions - use unique values - e.g., CI build number
NOTE- display port collisions - use unique values - e.g., CI build number
Headless w/ GhostDriverhttp://elementalselenium.com/tips/46-headless-ghostdriver
Why use it? • Faster execution times • Also useful for a CI server • Not limited to just Linux
Step 2 - Start PhantomJS w/ WebDriver flag
Step 1 - Download PhantomJShttp://phantomjs.org/download.html
Step 3 - Connect Your Test to PhantomJS using Selenium Remote
NOTEYou can also connect PhantomJS to a Selenium Grid http://se.tips/ghost-driver-grid
Option 1
Step 2 - Tell Selenium where it is
Step 1 - Download PhantomJShttp://phantomjs.org/download.html
Step 3 - Launch Selenium with PhantomJS locally
Option 2
Visual Testing
A 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
Visual Testing Challenges
• Managing complexity
• False positives
• e.g., shifting content, dynamic content, typos
In pom.xml
Visual Testing Write-ups
http://se.tips/se-visual-1 Getting Started
http://se.tips/se-visual-2 False Positives part 1
http://se.tips/se-visual-3 False Positives part 2
http://se.tips/se-visual-4 Add Visual Testing To Your Existing Tests
http://se.tips/se-visual-5 Add Visual Testing To Your BDD Tests
Selenium Grid Resources
• http://elementalselenium.com/tips/26-cloud
• http://elementalselenium.com/tips/52-grid
• http://elementalselenium.com/tips/70-grid-extras
Fun with a Proxy Server
Selenium Browser Proxy Server
Application Under Test
HTTP Status Codeshttp://elementalselenium.com/tips/17-retrieve-http-status-codes
Configuration
• Use a proxy server to capture the traffic from your Selenium test(s)
• Find the status code for the action you’re interested in (e.g., visiting a URL)
• Assert that the status code is what you expect
Blacklistinghttp://elementalselenium.com/tips/66-blacklist
Configuration
• Use a proxy server to manipulate the traffic from your Selenium test(s)
• Identify third-party resources that are slow to load (which could negatively impact your tests)
• Blacklist them (e.g., make it so they don’t load)
Load Testinghttp://elementalselenium.com/tips/68-load-testing-revisited
Configuration
• Use a proxy server to capture the traffic from your Selenium test(s)
• Convert the HTTP Archive into a JMeter JMX file
• Run the new JMX file with JMeter to enact load on your application (modify as needed)
Broken Image Checkinghttp://elementalselenium.com/tips/67-broken-images
Option 1 - Proxy Server
Option 2 - HTTP Library
Option 3 - JavaScript
Option 1: Proxy Server
Option 1: Proxy Server
Option 1: Proxy Server
Option 2: HTTP Library
Option 2: HTTP Library
Option 2: HTTP Library
Option 3: JavaScript
Option 3: JavaScript
Option 3: JavaScript
Forgot Passwordhttp://elementalselenium.com/tips/43-forgot-password
Configuration• Use Selenium to trigger a forgot password workflow
(to an send to a real email address) and keep the browser session active
• Retrieve the e-mail and the password information via the email provider’s API
• Use the password information in the active Selenium session (if applicable)
NOTE- not free - open issue
A/B Testinghttp://elementalselenium.com/tips/12-opt-out-of-ab-tests
• 3 page states available
• You can identify which state you’re in because there is different header text for each
• When you’re in the control: A/B Test Control
• For the variation: A/B Test Variation 1
• When you’re not in a test: No A/B Test
http://the-internet.herokuapp.com/abtest
Configuration
• You can easily opt-out of A/B tests by
• forging a cookie
• appending a query to the URL
• This way you get a known state of the page which isn’t likely to change without your knowledge
File Management
Uploading a Filehttp://elementalselenium.com/tips/1-upload-a-file
Options
• GUI manipulation with something like AutoIt
• Input the file path into the form field (side-stepping the system dialog)
Downloading a Filehttp://elementalselenium.com/tips/2-download-a-file http://elementalselenium.com/tips/8-download-a-file-revisited http://elementalselenium.com/tips/15-download-secure-files
Two approaches• Configure Selenium to download to local disk, and
delete the file when done
• Use an HTTP library, perform a HEAD request, and check the headers for the correct content type & length.
Why? • An order of magnitude faster using Selenium • No need to download the file
With Selenium
With Selenium
With an HTTP library
With an HTTP library
Additional Output
Highlight Elementshttp://elementalselenium.com/tips/65-highlight-elements
Growl Notificationshttp://elementalselenium.com/tips/53-growl
More Selenium Resources
• Selenium Bootcamp http://se.tips/se-bootcamp
• Weekly Selenium Tips http://se.tips/se-weekly-tips
• Weekly Se Tip Code http://se.tips/oss-tip-code
• Selenium Guidebook http://se.tips/se-guidebook
Available in Java and Ruby(C#, Python, & JS coming soon!)
https://seleniumguidebook.com
top related