Selenium WebDriver – Java, Cucumber BDD & more. Full Course!
This course has helped students become automation test engineers (check our the course reviews).
This course will teach you automation testing using Selenium Webdriver, Java, Cucumber BDD, TestNG, Jenkins and Apache Maven to develop a real world, functioning framework for real world, enterprise environments. This is different to most courses, as we focus on frameworks that actually provide skills for the real world.
> Why Learn Automation Testing?
Automation testing has been steadily grown in popularity these past few years thanks to the time/ cost savings and efficiency that it offers. Companies throughout the world have or plan to use automation testing to rapidly speed up their test capabilities. Automation test engineers are in great demand and offer an average salary of £45,000+ (2018). Now is a great time to learn about automation test engineering and this course has been carefully developed to slowly introduce you from the basics, all the way to building advanced frameworks.
This course introduces you to some of the most in demand automation test tools currently being used by automation testers throughout the world. I teach you from the very beginning and slowly build up to demonstrate the advance capabilities they offer. All this is taught using practical examples that I explain and you can follow.
I have personally taught countless teams to learn about automation testing in the workplace. In fact this is part of my job. I know what works when it comes to teaching new people about automation testing and I have developed this course by keeping this in mind.
> So, why should you learn cucumber BDD?
Cucumber (BDD) simplifies the requirement capturing process. Requirements can be captured, broken down and simplified effortlessly; making the captured requirements readable to anyone within the organisation and in turn providing the required details and backbone to develop accurate test cases also known as ‘Feature Files’.
Cucumber (BDD) simplifies the process of developing automation test scripts! Students enrolled within this course will see why!
Students will learn Cucumber BDD from a beginner’s level all the way to obtaining the knowledge to develop advanced sophisticated Cucumber BDD framework(s) of their own.
Cucumber is one of the BDD frameworks which is in very high demand
Search online for many automation testing roles and you will likely see BDD, Cucumber as a mandatory requirement!
> Why choose this course?
I have also been responsible for teaching countless students/colleagues and have refined this course so that students get the very best from my teaching material.
By completing this course; I ensure you’ll have all the knowledge you need to become an automation test engineer (and some students already have!)
Students that choose to enroll will get the following:
A course that explains every step clearly and in detail.
Gain knowledge on some of the most popular and in-demand automation test tools that employers ask for in job descriptions.
A course that is structured in a way which will enable anyone with basic of knowledge of Java and Selenium WebDriver to create basic to advanced Cucumber tests and even develop sophisticated Cucumber framework(s) from scratch.
Gain knowledge to develop and schedule your tests using Jenkins (Continuous integration).
You will also create and run tests against real world websites.
Be given access to webdriveruniversity (a website that I developed) so you can practice you test automation skills using the knowledge gained form this course.
> What will I learn?
The following topics are covered in this course. These topics have been specifically tailored to demonstrate and teach you the most important areas of automation testing. This is taught to you using a practical approach and you will see tests (that you have written) testing websites using your very own browser.
Gain a greater understating of Selenium WebDriver & Java.
Gradually learn and understand Cucumber (BDD) from a basic level all the way to an advanced level.
Learn the latest and most effective way to develop Cucumber Frameworks.
Learn how to architecturally design and develop Cucumber Frameworks the correct way.
Incorporate best practises when developing Cucumber Frameworks.
What is Gherkin and how can we use it?
Understand what exactly is a Feature File & how to create them.
Understand the purpose of Step Definition Classes & how to create them.
Explain the purpose of Runner Classes and explain how to optimize them using Options, Hooks & Tags.
Explain the advantages and purpose of reports and learn how to generate Advanced Reports.
Learn how to attach images to reports.
Understand the purpose of the Background keyword and why it’s a good idea to use it.
Explain the purpose of Data Tables.
Demonstration of Scenario Outlines & Examples (which is very important).
Explain the purpose of the Page Object Model & Page Factories.
I will show you how to Integrate Selenium and Java into your Cucumber projects.
I will teach you how to simulate a wide range of different test scenarios via planned automation test scripts.
We go through structured test cases using JUnit and explain why this is useful.
I explain how to find elements on websites.
I will explain the purpose and then master the ability to create Dynamic Locators.
Learn how to stabilize your tests.
Learn why a BasePage is so important and why it’s vital to centralize your code.
I will show you how to master Inheritance using Subpages.
I will show you DriverFactory creation and why a DriverFactory is very important!
I will explain how to download a customized Base Page Java class which comes bundled with Bespoke Methods.
I’ll explain the importance of Modelling Pages of a website into Separate Containers.
I’ll explain to you the purpose and limitations of Thread.sleep and teach you the correct way to wait and interact with website elements.
We will go though the Java JDK and Apache Maven setup.
I will demonstrate to you Eclipse IDE so that you become very familiar with it (including how to set it up).
Select and install important add-ons within Eclipse and explain why they are helpful.
I will demonstrate Maven and explain it’s purpose and why this is a wonderful tool to use.
Explain the importance of the Maven POM File and why we use it.
I will explain the M2 directory.
I will teach you how to simplify the update process (Dependencies) of your project.
We will go through some of the most popular Maven commands.
I will explain the constant class (for centralisation) & learn how to create dynamic directories.
We’ll go through Batch File creation and explain it’s uses.
I’ll teach you continuous integration using Jenkins and explain why this is very useful.
I will also show you some very important add-ons for Jenkins.
We will create some very visually appealing reports within Jenkins and attaching images to those reports.
I have made sure to include course notes & code with each module.
We will go through Chromedriver and Geckodriver and explain its purpose.
I will demonstrate how to use a specific Surefire plugin to our advantage.
I will teach you the purpose TestNG execution files and why these are used.
I will demonstrate the Config file and explain the purpose of the config reader class.
And much more!
> Bonus Material:
When you enroll, you will also receive the following:
FREE access to my Online Selenium WebDriver Automation Training Platform: WebdriverUniversity!
Be able to download a ‘Customised Base Class’ bundled with bespoke methods!
> New Content Added (16/09/2018):
Extent Reports – Extent Report is a HTML reporting library for Selenium WebDriver for Java which is to a great degree simple to use and makes excellent execution reports. We can use this tool within our TestNG automation framework. As an automation tester its obligation to catch great reporting and present to administration group. This module teaches you all you need to know to create great Extent Reports.
> 100% – MONEY BACK GUARANTEE
As always, if you are not 100% satisfied, all of my courses come with a 30 day money back guarantee, no questions asked.
How this Course is Structured
Hello and welcome to the first lecture of this course! This course has
been broken down into a series of modules each with the intentions of
simplifying whilst optimising the learning process. Each module has a
specific learning objective and outcome so please start this course from
the very beginning all the way to the very end and please DO NOT SKIP A
VIDEO even if you have experience within that given area. That being
said! hope you enjoy this course! glad to have another fellow student on
It’s vital that we setup our environment correctly before we start the
process of constructing our Cucumber automation framework. In this
module we will be downloading and setting up the key components required
to develop a Cucumber automation framework using Java.
Installing Java JDK & Maven | Setting up System Variables
If you're using a Mac then you will have to complete a few different steps compared to Windows users. Please copy these steps to a notepad and use these steps when working through Lecture 5 and Lecture 6.
There is also some additional guidance in the QA section if you get stuck.
If you're still having problems then create a new question and I will get back to you asap.
Java JDK also referred to as the ‘Java Development Kit’ is a key
component which is required to compile and execute our project code and
test case(s). This video focuses on installing the correct version of
the Java JDK and illustrates how to setup up the Java JDK ‘System
Apache Maven is a software project management and comprehension tool
which can greatly assist the automation developer who is wanting to
develop an effective test automation framework. This video focuses on
downloading the correct version of Apache Maven, setting up the required
system variables to get Apache Maven up and running and finally
validates whether the installing process was successful.
Eclipse IDE is a very popular open source integrated development
environment which is widely used throughout the automation testing
industry. Setting up Eclipse correctly can be a very tricky process;
this video focuses on downloading the correct version of Eclipse IDE and
breaks down the tricky process of handling problematic configurations
TestNG is a powerful and easy to use testing framework. This course
primarily focuses on using JUnit rather than TestNG however it’s still
useful to download and install the TestNG add-on(s) for Eclipse IDE.
Installing Required Cucumber Add-ons
There are several Cucumber add-ons which need to be downloaded and
installed to our instance of Eclipse IDE. I will be walk the student
through the selection and download process. We will be downloading the
required add-ons from two locations; one location which we will be using
is the Eclipse Marketplace and the other using a specific web URL.
Adding a Cool Colour Theme to Eclipse!
Eclipse Marketplace has many useful add-ons. If you’re somebody who
likes to play around with vibrant colours then this add-on is likely for
Chrome Browser & Chrome Driver Setup
Not only will we be focusing on downloading and installing Chrome
Browser but we will also download and inspect ChromeDriver which a
standalone server which implements WebDriver's wire protocol for
Chromium. ChromeDriver enables us to execute our automation tests within
What exactly is Apache Maven? Ever heard of the term POM file also
referred to as ‘Project Object Model’? Apache Maven is a project
management tool and it’s a great way for us to construct the foundations
of our Cucumber framework. POM file is a type of .xml file which can be
considered as the heart of any Apache Maven project, we will be using
the POM.xml file to aid the configuration(s) and update process for our
Cucumber automation framework(s).
Creating our First Maven Project!
Apache Maven is a software project management and comprehension tool.
Apache Maven plays a pivotal role in relation to developing a successful
automation framework. We can look at Apache Maven as being the
foundations for our test automation framework.
Inspecting the POM.xml
Page Object Model also referred to as POM.xml file can be referred to as
the heart of our test automation framework. The POM contains
information about the project and various configuration details used by
Maven to build our project. The POM file simplifies the process of
downloading the required JAR files from the web; let’s say there’s a
newer version of Selenium and Cucumber available, then all we need to do
is update a series of dependencies (Code) in one primarily location;
being the POM file itself.
Dependencies Required for our POM.xml file
Apache Maven Commands you Need to Know!
It’s essential for us to learn some key measures (Commands) which will
keep our test automation framework up to date and working efficiently.
CUCUMBER BASICS [MODULE]
It’s important we familiarise ourselves with the key building blocks
required to build a simple Cucumber automation framework which has the
capabilities of executing one or more test(s). During this lecture we
will examining many of the key components which can be interconnected
together to build a simple to advanced Cucumber automation framework.
So, what exactly is a Feature File? A Feature File serves as an
automation test script as well as live documentation. Feature File(s)
are constructed using a bespoke language called Gherkin, requirements
captured within Feature File(s) are readable to all areas of the
business; for example, non-technical individual(s).
WebDriverUniversity.com - Free Online (Interaction) Training Platform
As part of this course you will gain FREE ACCESS to my bespoke online
training platform, designed to aid whilst optimise the learning process.
Check out: www.webdriveruniversity.com
Feature File Creation
This video guides the user through the process of creating their very
first feature file using the Gherkin language. There are many things
which need to be considered when creating Feature File(s) for example
what exactly are we trying to test? What test scenario(s) are we trying
Regular expressions are widely used within the world of Cucumber BDD,
although this course does NOT focus on understanding regular expressions
(Regex) in detail, you may find this link very useful!
Step File Creation
Step Definitions(s) classes may be a confusing concept to get your head
around. In this video we will take a look at the pivotal role Step
Definition classes play and why there a mandatory component for our
Cucumber test automation framework.
We will use the Java programming language to construct the foundations
of our step definition class. This video breaks down the process of
creating our very first step definition class; we can think of step
definition classes as being the link between our feature file(s) and
Selenium / Java code; which will perform the actions of our test(s).
Runner Class Creation
A Runner Class enables the automation tester to target / execute one or
more Feature File(s). We can add further capabilities to our Runner
Class to perform further tasks such as solely targeting specific test
cases and developing advanced reports.
In this lecture we will be constructing our very first Runner Class, in turn using this developed class to target our Feature File(s) and Step Classes(s). We will also inspect and implement some code which will enable us to develop sophisticated report(s).
Integration Selenium WebDriver with Cucumber BDD
Integrating Selenium WebDriver into our Cucumber automation framework
can be a tricky concept to understand. It’s important that we understand
and know the location where Selenium WebDriver will be placed within
our test automation framework to form a better picture in relation to
how the actions of our automation framework will be performed.
In this lecture we will download and setup Gecko driver required to run
automation tests within Firefox browser. We will also create dynamic
locators using specific tools such as Firebug and Firepath and then
reference these locator(s) within our step method(s).
In this lecture we will further enhance our step classes by adding
additional validation points using Assertion(s). We will also inspect
the outcome of different test scenarios, for example what happens when a
given step method fails? What will be the outcome?
A Useful Batch File to have!
Let’s wrap up this module! Hopefully you should have gained a greater
understanding in relation to the key components required to develop a
simple Cucumber automation framework. Let’s run through the key
components of Cucumber one last time!
Cucumber Basics Module - [Project Code Download]
CUCUMBER ADVANCED [MODULE]
Now we should be familiar with the following concepts: Maven project
creation, Maven POM file, Feature File(s) creation, Step File(s)
creation, Selenium integration and more! Repetition is key!! in this
module we will be relook at the core components of Cucumber in a lot
Inspecting Advanced Gherkin Keywords!
Gherkin comes bundled with many keywords, we will look at some of the
many keywords which can be added to enhance our Feature File(s).
Simulating Multiple Test Scenarios
In the real world it’s likely the automation test engineer will need to
test MORE THAN ONE test scenario. This lecture guides the user through
the process of adding multiple test scenarios inside one single Feature
Creating Multiple Feature Files
A project can have multiple Feature Files. In this video the student will learn how to create and house multiple Feature Files.
Background Keyword (Avoid Code Duplication)
It’s always best to avoid code duplication when constructing an
automation test framework. In this lecture the student will learn and
observe the advantages of using the Gherkin Background keyword.
Parameterization (Data Driven Testing)
What are Cucumber Parameters? Why are they required? Parameters enable a
test automation developer to pass data from a feature file (Example:
username and password) into a step definition class.
In this lecture we will look at Parameters in action! Let’s say we have a
Feature File which contains two steps, one of the steps requires a
username and the other step required a password. We will pass the
username and password details from the Feature File and feed this data
into a Step Definition class or classes.
Data Tables (Structuring Our Test Data)
Data Tables are a great way to handle large masses of data, there are
potential setbacks when using Data Tables because the automation
developer is required to implement Java List(s).
Before we jump into action and start the process of implementing Data
Table(s) within our existing setup, we will observe Data Table(s) in
During this lecture we will break down the process of adding Data Table(s) to our existing framework and establish why Data Tables might be useful.
Scenario Outlines (Effective Way to Simulate Multiple Test Scenarios)
Scenario outlines eliminates the process of constructing tedious and repetitive tests cases (Scenarios), let’s see why!
Scenario outlines are a critical component which can be very valuable to
any Cucumber automation developer. Let’s see how we can use Scenario
Outlines to avoid repetition, avoid code duplication and save time!
In order too incorporate Scenario Outline(s) to our existing setup we
will create a new Feature File and in turn imbed the relevant Gherkin
syntax which is required to construct Scenario Outline(s). Main Gherkin
keywords required: ‘Scenario Outline‘ and ‘Examples’
This lecture focuses on setting up our WebDriver object and adding
further capabilities such as maximising the browser window whilst our
test scenario(s) are executed. During this lecture we will also look at
Cucumber Hooks which enable us to better manage our code workflow(s).
For example, as a test automation developer we will want to initialize
the driver object before any test Steps are implemented (We can’t
interact with a website if the browser window is not even open). The
Gherkin @Before Hook will enable us to initialize our driver object
before any test Steps are executed.
In this lecture we will begin the process of implementing our Step
method(s); we will pass data stored inside our Feature Files and use
that data within our Step classes. We will also look into creating
dynamic locators of a website with the use of specific tools such as
Firebug and Firepath. During this lecture we will be finalising the Step
methods housed inside our bespoke Steps class. We will discover ways to
make our tests more stable by implementing different inbuilt methods
whilst also adding further points of validation. Assertions are a great
way to make our tests stricter, we will also look at ways to handle
popup alerts etc.
During this lecture we will be finalising the Step methods housed inside
our bespoke Steps class. We will discover ways to make our tests more
stable by implementing different inbuilt methods whilst also adding
further points of validation. Assertions are a great way to make our
tests stricter, we will also look at ways to handle popup alerts etc.
Cucumber comes bundled with a numerous Hooks which enable us to run
blocks of code at various points of a Cucumber test cycle. We will look
at the Cucumber Hooks; @Before and @After and understand how these Hooks
can be added to our current setup to create and close our driver
During this lecture we will be implementing the @Before Cucumber Hook to
setup our driver object before any test steps are executed and then use
the @After Cucumber Hook to perform specific actions such as closing
our browser instance after the last test step(s) have been executed.