Agenda
•What is Selenium 2.0
•Architecture of Selenium 2.0
•Selenium 2.0 API:
• Finding elements
• Basic operations on elements
• Moving between windows and frames
• Explicit and Implicit Waits
•Creating tests using Selenium 2.0
2 www.ExigenServices.com
What is Selenium?
Selenium is a set of tools for cross-platform automated testing
of web applications.
Selenium supports:
• IE, Firefox, Safari, Opera and other browsers
• Windows, OS X, Linux, Solaris and other OS’s
• C#, Java, Perl, PHP, Python, Ruby and other languages
• Bromine, JUnit, NUnit, RSpec, TestNG, unittest
3 www.ExigenServices.com
Components of Selenium
• Selenium IDE
• Selenium Remote Control (RC)
• Selenium Grid
• Selenium 2.0 and WebDriver
4 www.ExigenServices.com
What is Selenium 2.0 ?
Selenium 1.0 Webdriver
IDE
Selenium RC
merge
Selenium Grid
Selenium
Webdriver 2.0
5 www.ExigenServices.com
Advantages of Selenium 2.0
• The development and connection of new drivers,
adapted to the specific test environment
• A more "advanced" API for writing tests
• Events generated are the same as for manual testing
• Work with invisible elements is not available
8 www.ExigenServices.com
Disadvantages of Selenium 2.0
• Need to create own webdriver for each test
environment
• Only 4 programming languages are supported
9 www.ExigenServices.com
Selenium API
WebDriver – to control the browser
WebDriver driver = new FirefoxDriver();
WebElement – to work with the elements on the page
WebElement element =
driver.findElement(By.id(“id”));
11 www.ExigenServices.com
WebDriver API
void get(java.lang.String url) – open page
void quit() – close browser
WebDriver.TargetLocator switchTo() – switching
between the popup-E, alert, windows
WebElement findElement(By by) -– find element by
locator
List<WebElement> findElements(By by) – find
elements by locator
12 www.ExigenServices.com
Selenium API: Find elements
Tools for finding elements:
1. Firebug. Download firebug at http://getfirebug.com/
2. Firefinder for Firebug
14 www.ExigenServices.com
Selenium API: Find elements
http://www.w3.org/TR/2001/CR-css3-selectors-20011113/#selectors
15 www.ExigenServices.com
Working with windows
Working with browser windows
driver.getWindowHandles()
driver.switchTo().window(windowName)
Working with frames
driver.switchTo().frame( "frameName" );
Working with alerts
driver.switchTo().alert();
18 www.ExigenServices.com
Create test
Test Case:
Selenium is in the first line of request for rambler search
Condition:
Browser is open
Steps:
1. Enter “selenium webdriver” into search request
2. Press search button
Expected result:
The first line of request must be a link to the official
Selenium website
20 www.ExigenServices.com
Create test
public class Rambler {
protected WebDriver driver;
@Before
public void setUp() throws Exception {
System.out.println("tmp");
// driver = new FirefoxDriver();
driver = new InternetExplorerDriver();
driver.get("http://www.rambler.ru/");
}
21 www.ExigenServices.com
Create test
@Test
public void RamblerSearch() throws Exception {
System.out.println(" TC: Selenium is in the first line of request for rambler search");
waitUntilDisplayed(By.cssSelector(Constants.txtRambler));
driver.findElement(By.cssSelector(Constants.txtRambler)).sendKeys("selenium webdriver");
driver.findElement(By.className("pointer")).click();
//wait first result
waitUntilDisplayed(By.cssSelector("div[class='b-left-column__wrapper']"));
assertTrue(driver.findElement(By.cssSelector("div[class='b-podmes_books b-
podmes_top_1']")).getText().contains("Selenium - Web Browser Automation"));
}
22 www.ExigenServices.com
Create test
public class Constants {
public static final String txtRambler = "input[class='r--hat-form-text-input']";
}
23 www.ExigenServices.com
Create test
@Test
public void RamblerSearch() throws Exception {
System.out.println(" TC: Selenium is in the first line of request for rambler search");
waitUntilDisplayed(By.cssSelector(Constants.txtRambler));
driver.findElement(By.cssSelector(Constants.txtRambler)).sendKeys("selenium webdriver");
driver.findElement(By.className("pointer")).click();
//wait first result
waitUntilDisplayed(By.cssSelector("div[class='b-left-column__wrapper']"));
assertTrue(driver.findElement(By.cssSelector("div[class='b-podmes_books b-
podmes_top_1']")).getText().contains("Selenium - Web Browser Automation"));
}
24 www.ExigenServices.com
Create test
public void waitUntilDisplayed(final By locator) {
( new WebDriverWait(driver, 120)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.findElement(locator).isDisplayed();
}
});
}
@After
public void tearDown() throws Exception {
//close browser
driver.quit();
}
25 www.ExigenServices.com
Structure of the test
1. Use Set UP () and tearDown()
2. All tests should finish with assertion
3. Elements’ locators should be defined in separate
class
28 www.ExigenServices.com