2. 2 www.ExigenServices.com
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
3. 3 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
8. 8 www.ExigenServices.com
• 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
Advantages of Selenium 2.0
11. 11 www.ExigenServices.com
Selenium API
WebDriver – to control the browser
WebElement – to work with the elements on the page
WebDriver driver = new FirefoxDriver();
WebElement element =
driver.findElement(By.id(“id”));
12. 12 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
18. 18 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();
20. 20 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
21. 21 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/");
}
22. 22 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. 24 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"));
}
25. 25 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();
}
28. 28 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