0% found this document useful (0 votes)
26 views90 pages

Selenium Tips for 2025 Conference

This document provides tips and tricks for using Selenium, including running tests headlessly using Xvfb or PhantomJS, visual testing, using a proxy server for tasks like load testing or checking HTTP status codes, handling A/B testing and file uploads/downloads, and additional Selenium resources.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views90 pages

Selenium Tips for 2025 Conference

This document provides tips and tricks for using Selenium, including running tests headlessly using Xvfb or PhantomJS, visual testing, using a proxy server for tasks like load testing or checking HTTP status codes, handling A/B testing and file uploads/downloads, and additional Selenium resources.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Selenium

Tips & Tricks


by Dave Haeffner

[Link]

[Link]

Headless
[Link]
Benefits:
- Speed
- Maintenance
- Screenshotting

Headless w/ Xvfb
[Link]

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
- e.g., xvfb-run -a

Headless w/ GhostDriver
[Link]

[Link]

Why use it?


Faster execution times
Also useful for a CI server
Not limited to just Linux

Option 1
Step 1 - Download PhantomJS
[Link]
Step 2 - Start PhantomJS w/ WebDriver flag

Step 3 - Connect Your Test to PhantomJS


using Selenium Remote
NOTE
You can also connect PhantomJS to a Selenium Grid
[Link]

Option 2

Step 1 - Download PhantomJS


[Link]
Step 2 - Tell Selenium where it is

Step 3 - Launch Selenium with PhantomJS locally

Visual Testing

A Visual Testing Primer

Check that an applications 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 [Link]

Visual Testing Write-ups


[Link]

Getting Started

[Link]

False Positives part 1

[Link]

False Positives part 2

[Link]

Add Visual Testing To Your Existing Tests

[Link]

Add Visual Testing To Your BDD Tests

Fun with a Proxy Server

Selenium

Browser

Proxy
Server

Application
Under
Test

[Link]

HTTP Status Codes


[Link]

Configuration

Use a proxy server to capture the traffic from your


Selenium test(s)

Find the status code for the action youre interested


in (e.g., visiting a URL)

Assert that the status code is what you expect

Blacklisting
[Link]

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 dont load)

Load Testing
[Link]

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)

[Link]

[Link]

Broken Image Checking


[Link]

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 Password
[Link]

Configuration

Use Selenium to trigger a forgot password workflow


(to email a real address) and keep the browser
session active

Retrieve the e-mail and the password information


via the email providers API

Use the password information in the active


Selenium session (if applicable)

[Link]

A/B Testing
[Link]

[Link]

3 page states available

You can identify which state youre in because


there is different header text for each

When youre in the control: A/B Test Control

For the variation: A/B Test Variation 1

When youre not in a test: No A/B Test

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


is far less likely to change without your knowledge

File Management

Uploading a File
[Link]

Options

GUI manipulation with something like AutoIt

Input the file path into the form field (side-stepping


the system dialog)

[Link]

Downloading a File
[Link]
[Link]
[Link]

Two approaches
[Link] Selenium to download to local disk, and
delete the file when done
[Link] an HTTP library, perform a HEAD request, and
check the headers for the correct content type &
length.
Why #2?
An order of magnitude faster
No need to download the file

With Selenium

With Selenium

With an HTTP library

With an HTTP library

Additional Output

Highlight Elements
[Link]

Growl Notifications
[Link]

More Selenium Resources

Selenium Bootcamp

[Link]

Weekly Selenium Tips [Link]

Weekly Se Tip Code

[Link]

Selenium Guidebook

[Link]

[Link]

You might also like