Upload
paul-stashevsky
View
10.441
Download
6
Embed Size (px)
DESCRIPTION
Citation preview
Selenium 2.0: новые возможности
Павел Сташевский,Тестировщик[email protected]
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
План мероприятия
Что такое Selenium 2.0 и как он появился? Архитектура Selenium 2.0 Возможности, преимущества и недостатки Обзор Selenium 2.0 API
Вопросы-ответы
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Что такое Selenium 2.0?
Selenium 1.0 Webdriver
Selenium 2.0
mergemerge
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Архитектура Selenium 1.0
Автотесты(Java, PHP, Phyton,
Ruby, C#, …)Selenium RCSelenium RC
HTTP
Браузеры
Web-application
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Архитектура Selenium 2.0
Автотесты(Java, PHP, Phyton,
Ruby, C#, …)Selenium RCSelenium RC
HTTP
Браузеры
Web-application
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Архитектура Selenium 2.0
Автотесты Браузеры
Web-application
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Архитектура Selenium 2.0
Автотесты БраузерыБраузеры
Web-application
DriverDriver
API (ООП) для управления браузером
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Принцип работы драйвера
В отличие от Selenium 1.0 не ограничен JS-песочницей
Работает с каждым браузером «индивидуально»
Драйвер – это объект, которым можно управлять из тестов
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Преимущества Selenium 2.0/Webdriver
Разработка и подключение новых драйверов, адаптированных под конкретную тестовую среду
Убыстрение скорости выполнения тестов
Более «продвинутое» АПИ для написания тестов (проще писать и проще поддерживать)
Решение проблем версии 1.0 (принцип Паретто)
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Недостатки и проблемы
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Какие поддерживаются языки?
Java Phyton Ruby C#
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Какие бывают драйверы?
HtmlUnitDriver FirefoxDriver ChromeDriver InternetExplorerDriver OperaDriver (
https://github.com/operasoftware/operadriver/)
SafariDriver Мобильные драйверы
AndroidDriver IphoneDriver
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
HtmlUnitDriver – безбраузерный режим
Быстрый, но не в реальном браузере Реализован на java, поэтому
кроссплатформенный Поддерживает java script
WebDriver driver = new HtmlUnitDriver();
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
“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(); }}
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Режим совместимости с Selenium1
Используем WebDriverBackedSelenium Используем синтаксис Selenium 1.0 с
некоторыми преимуществами Selenium 2.0 АПИ Selenium 1.0 маппится на 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
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Selenium API
WebDriver – для управления браузером/текущей загруженной страницей
WebElement – для работы с элементами на странице
WebDriver driver = new FirefoxDriver();
WebElement element = driver.findElement(By.id(“id”));
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
WebDriverы
interface WebDriver
IphoneDriver
AndroidDriver
RemoteWebDriver
ChromeDriver
InternetExplorerDriver
FirefoxDriver
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
WebDriver API
void get(java.lang.String url) – открыть страницу
WebElement findElement(By by) – найти элемент (если несколько, то первый)
List<WebElement> findElements(By by) – найти элементы по локатору
void quit() – закрыть сессию с браузером WebDriver.TargetLocator switchTo() –
переключение между popup-ми, алертами, окошками
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Работа с окошками
Работа с окошками браузера driver.getWindowHandles() driver.switchTo().window(windowName)
Работа со фреймами driver.switchTo().frame( "frameName" );
Работа с алертами Alert alert = driver.switchTo().alert();
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Локаторы и поиск элементов
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")
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Поиск элементов
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" ));
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Работа с 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() – клик по чекбоксу
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Работа с WebElement
WebElement – представление HTML-элемента (тега) вместе с его содержимым
Действия: boolean isSelected() void setSelected() boolean isEnabled() String getText() WebElement findElement(By by) List<WebElement> findElements(By by)
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
WebElement для разных браузеров
Существуют реализации WebElement для разных браузеров: FirefoxWebElement InternetExplorerElement И др.
Они поддерживают расширенную функциональность, т.е. специализированы под конкретный браузер (drag-and-drop, положение элементов на странице)
Но тогда теряется кроссфункциональность!
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Работаем с Ajax
Работа осуществляется через специальный вид элемента на странице RenderedWebElement
Этот элемент может как отображаться на странице, так и не отображаться
Если элемент не отображается, то метод findElement() не выбросит Exception
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Работаем с Ajax: пример
long end = System.currentTimeMillis() + 5000; while (System.currentTimeMillis() < end) { RenderedWebElement resultsDiv = RenderedWebElement) driver.findElement(By.id("gac_m"));
if (resultsDiv.isDisplayed()) { break; }}
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Еще возможности
Можно работать с куками Можно использовать профили для Firefox Можно выполнять JS на страницах Поддержка HTML5 И многое другое
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
RemoteWebDriver
Предназначен для запуска тестов на удаленной машине
Для его использования нужен клиент (RemoteWebDriver) и сервер (RemoteWebDriverServer) RemoteWebDriver(Capabilities desiredCapabilities)
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ● СЕРВИСЫ ● ОБУЧЕНИЕ ● КОНСАЛТИНГРоссия, Азербайджан, Армения, Беларусь, Грузия, Казахстан, Кыргызстан, Таджикистан, Туркменистан, Узбекистан, Украина, Монголия, Турция, Венесуэла, Вьетнам, Иран, Египет
Вопросы-ответы
Вопросы ))
Павел Сташевский,Тестировщик[email protected]://stashevskiy.blogspot.comhttp://twitter.com/paulstashevsky