Getting started with selenium
Remarks#
Selenium is a powerful library of commands in multiple languages (C#, Haskell, Java, JavaScript, Objective-C, Perl, PHP, Python, R, and Ruby) that allow a programmer to automate browser interaction. This is incredibly useful for developers testing applications.
Selenium offers methods to:
- Find an Element in a webpage
- Click on an Element
- Send a String to an Element
- Navigate to a web page
- Change to a different tab in the same browser window
- Take a screenshot of a webpage
Using these methods, a developer can have automatic tests checking:
- If an Element is in a page, and visible to a user
- A search or login form
- Buttons or interactive Elements
- Check the values or attributes of an Element
Selenium runs in webdrivers, which are similar to a normal web browser but allow Selenium to interact with them. A Selenium test typically opens up a new driver instance of whatever browser the developer is testing in, which is always a clean slate. This way, when running a Selenium test, the developer does not have to worry about previous cookies, or a browser cache affecting the results of their application.
Selenium also works when running a webdriver in headless mode.
Versions#
Version | Release date |
---|---|
3.4.0 | 2017-04-11 |
3.3 | 2017-04-07 |
3.2 | 2017-02-27 |
3.1 | 2017-02-13 |
3.0.1 | 2016-11-19 |
3.0 | 2016-10-11 |
Simple Selenium test in Java
Below code is simple java program using selenium. The journey of the below code is
- Open Firefox browser
- Open google page
- Print title of Google page
- Find the search box location
- Pass the value as Selenium in the search box
- Submit the form
- Shutdown the browser
package org.openqa.selenium.example;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import java.util.concurrent.TimeUnit;
public class Selenium2Example {
public static void main(String[] args) {
// Create a new instance of the Firefox driver
WebDriver driver = new FirefoxDriver();
// An implicit wait is to tell WebDriver to poll the DOM for a certain amount of time
// when trying to find an element or elements if they are not immediately available.
// The default setting is 0. Once set, the implicit wait is set for the life of the WebDriver object instance.
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// Maximize the browser window to fit into screen
driver.manage().window().maximize();
// Visit Google
driver.get("https://www.google.com");
// Check the title of the page
System.out.println("Page title is: " + driver.getTitle());
// Find the text input element by its name
WebElement element = driver.findElement(By.name("q"));
// Enter something to search for
element.sendKeys("Selenium!");
// Now submit the form. WebDriver will find the form for us from the element
element.submit();
//Close the browser
driver.quit();
}
}
Simple selenium test in python
from selenium import webdriver
# Create a new chromedriver
driver = webdriver.Chrome()
# Go to www.google.com
driver.get("https://www.google.com")
# Get the webelement of the text input box
search_box = driver.find_element_by_name("q")
# Send the string "Selenium!" to the input box
seach_box.send_keys("Selenium!")
# Submit the input, which starts a search
search_box.submit()
# Wait to see the results of the search
time.sleep(5)
# Close the driver
driver.quit()
Setting up python Selenium via terminal (BASH)
The easiest way is to use pip and VirtualEnv. Selenium also requires python 3.*.
Install virtualenv using:
$: pip install virtualenv
Create/enter a directory for your Selenium files:
$: cd my_selenium_project
Create a new VirtualEnv in the directory for your Selenium files:
$: virtualenv -p /usr/bin/python3.0 venv
Activate the VirtualEnv:
$: source venv/bin/active
You should see now see (venv) at the beginning of each bash line. Install Selenium using pip:
$: pip install selenium
Selenium comes with the FireFox driver by default.
If you want to run Selenium in google chrome, also do this:
$: pip install chromedriver
You now have a version-controlled VirtualEnv. To make sure everything is set up correctly:
Start python:
$: python
Prints out:
Python 2.7.10 (default, Jul 14 2015, 19:46:27)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
Create a new webdriver (in this case, a chromedriver), and go to www.google.com:
>>> from selenium import webdriver
>>> driver = webdriver.Chrome()
>>> driver.get("https://www.google.com")
Close the driver and python interpreter:
>>> driver.quit()
>>> quit()
Deactivate the VirtualEnv:
$: deactivate
If the line driver = webdriver.Chrome()
is throwing errors:
-
Make sure you also have the chrome browser installed. If you don’t, the Selenium chromedriver can not access the Chrome binary.
-
webdriver.Chrome() can also take a parameter for your chromedriver location. If you installed it using pip, try (on mac)
driver = webdriver.Chrome("./venv/selenium/webdriver/chromedriver")
.
Simple Selenium Example in C#
//Create a new ChromeDriver
IWebDriver driver = new ChromeDriver();
//Navigate to www.google.com
driver.Navigate().GoToUrl("https://www.google.com");
//Find the WebElement of the search bar
IWebElement element = driver.FindElement(By.Name("q"));
//Type Hello World into search bar
element.SendKeys("Hello World");
//Submit the input
element.Submit();
//Close the browser
driver.Quit();