2. 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
3. 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
4. Components of Selenium
• Selenium IDE
• Selenium Remote Control (RC)
• Selenium Grid
• Selenium 2.0 and WebDriver
4 www.ExigenServices.com
5. What is Selenium 2.0 ?
Selenium 1.0 Webdriver
IDE
Selenium RC
merge
Selenium Grid
Selenium
Webdriver 2.0
5 www.ExigenServices.com
8. 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
9. Disadvantages of Selenium 2.0
• Need to create own webdriver for each test
environment
• Only 4 programming languages are supported
9 www.ExigenServices.com
11. 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
12. 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
18. 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
20. 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
21. 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
22. 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
23. Create test
public class Constants {
public static final String txtRambler = "input[class='r--hat-form-text-input']";
}
23 www.ExigenServices.com
24. 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
25. 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
28. 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