Our First Selenium WebDriver Script Implementation
In the previous two tutorials, we made you acquainted with the basic architecture and features of WebDriver and the infrastructure required to get started with Selenium WebDriver. Assuming that you all might have set up the system with all the utilities and packages, we will move further with the implementation of our first WebDriver test script.
Therefore, moving ahead with the consequent Selenium WebDriver tutorial, we will create a WebDriver script. In addition, we will cover the basic and commonly used WebDriver commands. We will also cover the strategies for locating UI elements and incorporating them into test scripts. Get Commands will be studied in depth too.
Table of Contents:

Script Creation
For script creation, we will use the “Learning_Selenium” project created in the previous tutorial and “gmail.com” as the application under test (AUT).
Scenario:
- Launch the browser and open “Gmail.com”.
- Verify the title of the page and print the verification result.
- Enter the username and Password.
- Click on the Sign in button.
- Close the web browser.
Step #1: Create a new java class named as “Gmail_Login” under the “Learning_Selenium” project.
Step #2: Copy and paste the below code in the “Gmail_Login.java” class.
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Gmail_Login {
/**
* @param args
*/
public static void main(String[] args) {
// objects and variables instantiation
WebDriver driver = new FirefoxDriver();
String appUrl = "https://accounts.google.com";
// launch the firefox browser and open the application url
driver.get(appUrl);
// maximize the browser window
driver.manage().window().maximize();
// declare and initialize the variable to store the expected title of the webpage.
String expectedTitle = " Sign in - Google Accounts ";
// fetch the title of the web page and save it into a string variable
String actualTitle = driver.getTitle();
// compare the expected title of the page with the actual title of the page and print the result
if (expectedTitle.equals(actualTitle))
{
System.out.println("Verification Successful - The correct title is displayed on the web page.");
}
else
{
System.out.println("Verification Failed - An incorrect title is displayed on the web page.");
}
// enter a valid username in the email textbox
WebElement username = driver.findElement(By.id("Email"));
username.clear();
username.sendKeys("TestSelenium");
// enter a valid password in the password textbox
WebElement password = driver.findElement(By.id("Passwd"));
password.clear();
password.sendKeys("password123");
// click on the Sign in button
WebElement SignInButton = driver.findElement(By.id("signIn"));
SignInButton.click();
// close the web browser
driver.close();
System.out.println("Test script executed successfully.");
// terminate the program
System.exit(0);
}
}
The above code is equivalent to the textual scenario presented earlier.
Code Walkthrough
Import Statements:
import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.By;
Prior to the actual scripting, we need to import the above packages:
import org.openqa.selenium.WebDriver – References the WebDriver interface, which is required to instantiate a new web browser.
import org.openqa.selenium.firefox.FirefoxDriver – References the FirefoxDriver class that is required to instantiate a Firefox-specific driver on the browser instance instantiated using the WebDriver interface.
import org.openqa.selenium.WebElement – References to the WebElement class which is required to instantiate a new web element.
import org.openqa.selenium.By – References to the By class on which a locator type is called.
As and when our project grows, it is evident and logical that we might have to introduce several other packages for more complex and distinct functionalities like Excel manipulations, database connectivity, logging, assertions, etc.
Object Instantiation
WebDriver driver = new FirefoxDriver();
We create a reference variable for the WebDriver interface and instantiate it using the FirefoxDriver class. A default Firefox profile will be launched, so no extensions and plugins would be loaded with the Firefox instance and that it runs in the safe mode.
Launching the Web browser
driver.get(appUrl);
A get() method is called on the WebDriver instance to launch a fresh web browser instance. The string character sequence passed as a parameter into the get() method redirects the launched web browser instance to the application URL.
Maximize Browser Window
driver.manage().window().maximize();
The maximize() method is used to maximize the browser window soon after it is re-directed to the application URL.
Fetch the page Title
driver.getTitle();
The getTitle() method is used to fetch the title of the current web page. Thus, the fetched title can be loaded to a string variable.
Comparison between Expected and Actual Values:
if (expectedTitle.equals(actualTitle))
{
System.out.println("Verification Successful - The correct title is displayed on the web page.");
}
else
{
System.out.println("Verification Failed - An incorrect title is displayed on the web page.");
}
The above code uses the conditional statement Java constructs to compare the actual value, and the expected value. Based on the result obtained, the print statement would be executed.
WebElement Instantiation
WebElement username = driver.findElement(By.id(“Email”));
In the above statement, we instantiate the WebElement reference with the help of “driver.findElement(By.id(“Email”))”. Thus, a username can reference the Email textbox on the user interface every time we want to perform some action on it.
Clear Command
username.clear();
The clear() method/command is used to clear the value present in the textbox if any. It also clears the default placeholder value.
sendKeys Command
username.sendKeys(“TestSelenium “);
The sendKeys() method/command is used to enter/type the specified value (within the parentheses ) in the textbox. Notice that the sendKeys() method is called on the WebElement object which was instantiated with the help of the element property corresponding to the UI element.
The above block of code enters the string “TestSelenium” inside the Email textbox on the Gmail application.
sendKeys is one of the most popularly used commands across the WebDriver scripts.
Click Command
SignInButton.click();
Like sendKeys(), click() is another excessively used command to interact with the web elements. Click() command/method is used to click on the web element present on the web page.
The above block of code clicks on the “Sign in” button present on the Gmail application.
Notes:
- Unlike the sendKeys() method, click() methods can never be parameterized.
- At times, clicking on a web element may load a new page altogether. Thus, to sustain such cases, the click() method is coded in a way to wait until the page is loaded.
Close the Web Browser
driver.close();
The close() is used to close the current browser window.
Terminate the Java Program
System.exit(0);
The Exit() method terminates the Java program forcefully. Thus, remember to close all the browser instances before terminating the Java Program.
Test Execution
The test script, or simply the Java program, can be executed in the following ways:
#1) Under Eclipse’s menu bar, there is an icon to execute the test script. Refer to the following figure.

Make a note that only the class which is selected will be executed.
#2) Right-click anywhere inside the class within the editor, select the “Run As” option, and click on the “Java Application”.
#3) Another shortcut to execute the test script is to press ctrl + F11.
At the end of the execution cycle, the print statement “Test script executed successfully.” can be found in the console.
Locating Web Elements
Web elements in WebDriver can be located and inspected in the same way as we did in the previous tutorials of Selenium IDE. Selenium IDE and Firebug can inspect the web element on the GUI. We strongly recommend using Selenium IDE for finding the web elements.
Once the web element is successfully found, copy and paste the target value within the WebDriver code. The types of locators and the locating strategies are pretty much the same except for the syntax and their application.
In WebDriver, web elements are located with the help of the dynamic finders (findElement(By.locatorType(“locator value”))).
Sample Code:
driver.findElement(By.id(“Email”));

Locator Types and Their Syntax
Conclusion
In this tutorial, we developed an automation script using WebDriver and Java. We also discussed the various components that constitute a WebDriver script.
Here are the cruxes of this Selenium WebDriver Tutorial:
- Prior to the actual scripting, we need to import a few packages to create a WebDriver script.
- importopenqa.selenium.By;
- importopenqa.selenium.WebDriver;
- importopenqa.selenium.WebElement;
- importopenqa.selenium.firefox.FirefoxDriver;
- A get() method is used to launch a fresh web browser instance. The character sequence passed as a parameter into the get() method redirects the launched web browser instance to the application URL.
- The maximize() method is used to maximize the browser window.
- The clear() method is used to clear the value present in the textbox if any.
- The sendKeys() method is used to enter the specified value in the textbox.
- Click() method is used to click on the web element present on the web page.
- In WebDriver, web elements can be located using Dynamic finders.
- The following are the available locator types:
- id
- className
- name
- xpath
- cssSelector
- linkText
- partialLinkText
- tagName
Moving ahead, in the next tutorial, we will shift our focus towards a framework that aids Automation testing known as TestNG. We would have a detailed study of the various kinds of annotations provided by the framework.
Next tutorial #11: Before diving deep into Frameworks, we will see details about JUnit – an open-source unit testing tool. Most of the programmers use JUnit as it is easy and does not take much effort to test. This tutorial will give an insight into JUnit and its usage in selenium script.
A remark for the readers: While our next tutorial of the Selenium series is in processing mode, readers can start creating their own basic WebDriver scripts. For more advanced scripts and concepts, we will have various other Selenium WebDriver tutorials coming up in this series.
Feel free to leave a comment if you face any difficulties in creating or executing the WebDriver scripts.
Was this helpful?
Thanks for your feedback!