Test With Spring Course
Save Time by Writing Less Test Code
  • Home
  • Pre-Sales FAQ
  • Support
  • Log In

/ April 1, 2017 / petrikainulainen

Introduction to Selenium WebDriver

Lesson Progress:
← Back to Topic

After we have finished this lesson, we

  • Know what Selenium WebDriver is.
  • Can identify the key components of our end-to-end tests.
  • Can get the required dependencies with Maven and Gradle.

Watch the Lesson

 

The text version of this lesson is given in the following:

What Is Selenium WebDriver?

Selenium WebDriver is an API that allows us to write automated tests for web applications. The automated tests that use Selenium WebDriver are run by using a web browser. In other words, Selenium WebDriver helps us to verify that our application is working as expected when it is used by a real user.

The key features of Selenium WebDriver are:

  • It supports many common programming languages such as C#, Java, JavaScript, Python, and so on.
  • It supports all common web browsers.
  • It supports headless browsers such as HtmlUnit and PhantomJS.

Additional Reading:

  • Selenium WebDriver Reference Documentation: Supported Browsers and Platforms

Next, we will take a closer look at the key components of our end-to-end tests.

The Key Components of Our End-to-End Tests

Selenium WebDriver is a quite complex beast, and this lesson doesn’t provide a comprehensive description of its architecture because it doesn’t belong to scope of this lesson.

However, before we write end-to-end tests that use Selenium WebDriver, we should recognize the key components of our end-to-end tests and understand how these components interact with each other.

The key components of our end-to-end tests are:

  • The WebDriver interface declares the methods that we use when we write our end-to-end tests. These methods help us to control the used web browser and select elements from the loaded HTML page. Naturally, our test class must use the browser specific implementation of this interface.
  • The test class controls the used web browser, selects elements from the loaded HTML page, and writes assertions for the data found from these elements.
  • The driver executable is a browser specific component that implements either the older Selenium WebDriver’s JSON wire protocol or the newer W3C WebDriver specification. It acts as a proxy between Selenium WebDriver and the used web browser.
  • The web browser provides native support for automated tests. It provides an API that allows us to remotely control the user interface of the tested web application. The driver executable uses this API when it forwards the requests send by Selenium WebDriver.

The following figure illustrates the relationship between these components:

Additional Reading:

  • Selenium WebDriver Reference Documentation: Driver Specifics and Tradeoffs
  • Selenium Wiki: JsonWireProtocol
  • W3C WebDriver Specification

Let’s move on and find out how we can get the required dependencies with Maven and Gradle.

Getting the Required Dependencies

We can get the required dependencies by declaring the selenium-java dependency in our build script.

If we are using Maven, we have to add the following snippet to our pom.xml file:

<dependency>
	<groupId>org.seleniumhq.selenium</groupId>
	<artifactId>selenium-java</artifactId>	
	<version>3.3.1</version>
	<scope>test</scope>
</dependency>

If we are using Gradle, we have to add the following snippet to our build.gradle file:

dependencies {
    endToEndTestCompile(
            'org.seleniumhq.selenium:selenium-java:3.3.1'
    )
}

If you know that you will use only one WebDriver implementation, you don’t need to depend on the selenium-java dependency. You can simply declare the dependency you need. This helps you avoid the unnecessary transitive dependencies of the selenium-java dependency.

Additional Reading:

  • Selenium Downloads: Maven Information

Let’s summarize what we learned from this lesson.

Summary

This lesson has taught us four things:

  • Selenium WebDriver supports many common programming languages and all common web browsers.
  • The driver specific implementation of the WebDriver interface and the driver executable allows us to write automated tests that use the browser’s native test automation API.
  • We can get all required dependencies by declaring the selenium-java dependency in our build script.
  • If we want to use only one WebDriver implementation, we don’t need the selenium-java dependency. We can simply declare the dependency we want to use.

← Previous Lesson

Can I help you?

This is a free sample lesson of my Test With Spring course. If this lesson helped you to solve your problem, you should find out how my testing course can help you.

Support and Privacy

  • Pre-Sales FAQ
  • Support
  • Cookie Policy
  • No Bullshit Privacy Policy
  • No Bullshit Terms and Conditions

Test With Spring Course

  • Starter Package
  • Intermediate Package
  • Master Package

Free Sample Lessons

  • Introduction to JUnit 4
  • Introduction to Unit Testing
  • Introduction to Integration Testing
  • Introduction to End-to-End Testing
  • Introduction to Spock Framework
  • Introduction to Integration Testing – Spock Edition
  • Writing End-to-End Tests With Spock Framework

Copyright Koodikupla Oy 2016 — Built on Thesis by Themedy