30
Selenium 2.0: новые возможности Павел Сташевский, Тестировщик [email protected]

Selenium 2.0: обзор новых возможностей

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Selenium 2.0: обзор новых возможностей

Selenium 2.0: новые возможности

Павел Сташевский,Тестировщик[email protected]

Page 2: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

План мероприятия

Что такое Selenium 2.0 и как он появился? Архитектура Selenium 2.0 Возможности, преимущества и недостатки Обзор Selenium 2.0 API

Вопросы-ответы

Page 3: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Что такое Selenium 2.0?

Selenium 1.0 Webdriver

Selenium 2.0

mergemerge

Page 4: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Архитектура Selenium 1.0

Автотесты(Java, PHP, Phyton,

Ruby, C#, …)Selenium RCSelenium RC

HTTP

Браузеры

Web-application

Page 5: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Архитектура Selenium 2.0

Автотесты(Java, PHP, Phyton,

Ruby, C#, …)Selenium RCSelenium RC

HTTP

Браузеры

Web-application

Page 6: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Архитектура Selenium 2.0

Автотесты Браузеры

Web-application

Page 7: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Архитектура Selenium 2.0

Автотесты БраузерыБраузеры

Web-application

DriverDriver

API (ООП) для управления браузером

Page 8: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Принцип работы драйвера

В отличие от Selenium 1.0 не ограничен JS-песочницей

Работает с каждым браузером «индивидуально»

Драйвер – это объект, которым можно управлять из тестов

Page 9: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Преимущества Selenium 2.0/Webdriver

Разработка и подключение новых драйверов, адаптированных под конкретную тестовую среду

Убыстрение скорости выполнения тестов

Более «продвинутое» АПИ для написания тестов (проще писать и проще поддерживать)

Решение проблем версии 1.0 (принцип Паретто)

Page 10: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Недостатки и проблемы

Page 11: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Какие поддерживаются языки?

Java Phyton Ruby C#

Page 12: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Какие бывают драйверы?

HtmlUnitDriver FirefoxDriver ChromeDriver InternetExplorerDriver OperaDriver (

https://github.com/operasoftware/operadriver/)

SafariDriver Мобильные драйверы

AndroidDriver IphoneDriver

Page 13: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

HtmlUnitDriver – безбраузерный режим

Быстрый, но не в реальном браузере Реализован на java, поэтому

кроссплатформенный Поддерживает java script

WebDriver driver = new HtmlUnitDriver();

Page 14: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

“Hello, world!” на Selenium 2.0public class GoogleTest { protected WebDriver driver;

@BeforeClass public void setUp() { driver = new ChromeDriver(); }

@Test public void testSearch() { driver.get("http://google.ru"); WebElement search = driver.findElement(By.name("q")); search.sendKeys("Selenium 2.0"); WebElement btn = driver.findElement(By.name("btnG")); btn.submit(); }

@AfterClass public void tearDown() { driver.quit(); }}

Page 15: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Режим совместимости с Selenium1

Используем WebDriverBackedSelenium Используем синтаксис Selenium 1.0 с

некоторыми преимуществами Selenium 2.0 АПИ Selenium 1.0 маппится на Selenium 2.0

Page 16: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Режим совместимости c Selenium1

WebDriver driver = new FirefoxDriver(); String baseUrl = "http://book.ru";

Selenium selenium = new WebDriverBackedSelenium(driver,baseUrl); selenium.open("/"); selenium.click("link=chapter1"); // rest of the test code

Page 17: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Selenium API

WebDriver – для управления браузером/текущей загруженной страницей

WebElement – для работы с элементами на странице

WebDriver driver = new FirefoxDriver();

WebElement element = driver.findElement(By.id(“id”));

Page 18: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

WebDriverы

interface WebDriver

IphoneDriver

AndroidDriver

RemoteWebDriver

ChromeDriver

InternetExplorerDriver

FirefoxDriver

Page 19: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

WebDriver API

void get(java.lang.String url) – открыть страницу

WebElement findElement(By by) – найти элемент (если несколько, то первый)

List<WebElement> findElements(By by) – найти элементы по локатору

void quit() – закрыть сессию с браузером WebDriver.TargetLocator switchTo() –

переключение между popup-ми, алертами, окошками

Page 20: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Работа с окошками

Работа с окошками браузера driver.getWindowHandles() driver.switchTo().window(windowName)

Работа со фреймами driver.switchTo().frame( "frameName" );

Работа с алертами Alert alert = driver.switchTo().alert();

Page 21: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Локаторы и поиск элементов

By.id("idOfObject") By.linkText("TextUsedInTheLink") By.partialLinkText("partOfThelink") By.tagName("theHTMLNodeType") By.className("cssClassOnTheElement") By.cssSelector("cssSelectorToTheElement") By.xpath("//Xpath/to/the/element") By.name("nameOfElement")

Page 22: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Поиск элементов

WebElement

Ex.1WebElement element = driver.findElement(By.id(“id”));

Ex.2WebElement select = driver.findElement(By.xpath( "//select" ));List<WebElement> allOptions = select.findElements(By.tagName( "option" ));

Page 23: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Работа с WebElement

WebElement – представление HTML-элемента (тега) вместе с его содержимым

Действия: void click() – клик по элементу void submit() – отправка формы String getValue() – получение значения элемента void sendKeys(keysToSend) – ввод текста в input-

элемент void clear() – очистка input-элемента String getElementName() – получение name элемента String getAttribute(java.lang.String name) – получение

значения атрибута boolean toggle() – клик по чекбоксу

Page 24: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Работа с WebElement

WebElement – представление HTML-элемента (тега) вместе с его содержимым

Действия: boolean isSelected() void setSelected() boolean isEnabled() String getText() WebElement findElement(By by) List<WebElement> findElements(By by)

Page 25: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

WebElement для разных браузеров

Существуют реализации WebElement для разных браузеров: FirefoxWebElement InternetExplorerElement И др.

Они поддерживают расширенную функциональность, т.е. специализированы под конкретный браузер (drag-and-drop, положение элементов на странице)

Но тогда теряется кроссфункциональность!

Page 26: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Работаем с Ajax

Работа осуществляется через специальный вид элемента на странице RenderedWebElement

Этот элемент может как отображаться на странице, так и не отображаться

Если элемент не отображается, то метод findElement() не выбросит Exception

Page 27: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Работаем с Ajax: пример

long end = System.currentTimeMillis() + 5000;    while (System.currentTimeMillis() < end) {                 RenderedWebElement resultsDiv = RenderedWebElement) driver.findElement(By.id("gac_m"));

     if (resultsDiv.isDisplayed()) {         break;     }}

Page 28: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Еще возможности

Можно работать с куками Можно использовать профили для Firefox Можно выполнять JS на страницах Поддержка HTML5 И многое другое

Page 29: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

RemoteWebDriver

Предназначен для запуска тестов на удаленной машине

Для его использования нужен клиент (RemoteWebDriver) и сервер (RemoteWebDriverServer) RemoteWebDriver(Capabilities desiredCapabilities)

Page 30: Selenium 2.0: обзор новых возможностей

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет

Вопросы-ответы

Вопросы ))

Павел Сташевский,Тестировщик[email protected]://stashevskiy.blogspot.comhttp://twitter.com/paulstashevsky