Your SlideShare is downloading. ×
Selenium 2.0: обзор новых возможностей
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

9,823
views

Published on


0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,823
On Slideshare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
58
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Selenium 2.0: новые возможности Павел Сташевский, Тестировщик [email_address]
  • 2. План мероприятия
    • Что такое Selenium 2.0 и как он появился?
    • Архитектура Selenium 2.0
    • Возможности, преимущества и недостатки
    • Обзор Selenium 2.0 API
    • Вопросы-ответы
  • 3. Что такое Selenium 2.0? Selenium 1.0 Webdriver Selenium 2.0 merge
  • 4. Архитектура Selenium 1.0 Автотесты ( Java, PHP, Phyton, Ruby, C#, …) Selenium RC HTTP Браузеры Web-application
  • 5. Архитектура Selenium 2 .0 Автотесты ( Java, PHP, Phyton, Ruby, C#, …) Selenium RC HTTP Браузеры Web-application
  • 6. Архитектура Selenium 2.0 Автотесты Браузеры Web-application
  • 7. Архитектура Selenium 2.0 Автотесты Браузеры Web-application Driver API (ООП) для управления браузером
  • 8. Принцип работы драйвера
    • В отличие от Selenium 1.0 не ограничен JS- песочницей
    • Работает с каждым браузером «индивидуально»
    • Драйвер – это объект, которым можно управлять из тестов
  • 9. Преимущества Selenium 2.0/Webdriver
    • Разработка и подключение новых драйверов, адаптированных под конкретную тестовую среду
    • Убыстрение скорости выполнения тестов
    • Более «продвинутое» АПИ для написания тестов (проще писать и проще поддерживать)
    • Решение проблем версии 1.0 (принцип Паретто)
  • 10. Недостатки и проблемы
  • 11. Какие поддерживаются языки?
    • Java
    • Phyton
    • Ruby
    • C#
  • 12. Какие бывают драйверы?
    • HtmlUnitDriver
    • FirefoxDriver
    • ChromeDriver
    • InternetExplorerDriver
    • OperaDriver ( https://github.com/operasoftware/operadriver/ )
    • SafariDriver
    • Мобильные драйверы
      • AndroidDriver
      • IphoneDriver
  • 13. HtmlUnitDriver – безбраузерный режим
    • Быстрый, но не в реальном браузере
    • Реализован на java, поэтому кроссплатформенный
    • Поддерживает java script
    WebDriver driver = new HtmlUnitDriver();
  • 14. “ Hello, world!” на Selenium 2.0 public 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(); } }
  • 15. Режим совместимости с Selenium1
    • Используем WebDriverBackedSelenium
    • Используем синтаксис Selenium 1.0 с некоторыми преимуществами Selenium 2.0
    • АПИ Selenium 1.0 маппится на Selenium 2.0
  • 16. Режим совместимости 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
  • 17. Selenium API
    • WebDriver – для управления браузером/текущей загруженной страницей
    • WebElement – для работы с элементами на странице
    WebDriver driver = new FirefoxDriver(); WebElement element = driver.findElement(By.id(“id”));
  • 18. WebDriver ы interface WebDriver IphoneDriver AndroidDriver RemoteWebDriver ChromeDriver InternetExplorerDriver FirefoxDriver
  • 19. WebDriver API
    • void get(java.lang.String url) – открыть страницу
    • WebElement findElement(By by) – найти элемент (если несколько, то первый)
    • List<WebElement> findElements(By by) – найти элементы по локатору
    • void quit() – закрыть сессию с браузером
    • WebDriver.TargetLocator switchTo() – переключение между popup- ми, алертами, окошками
  • 20. Работа с окошками
    • Работа с окошками браузера
      • driver.getWindowHandles()
      • driver.switchTo().window(windowName)
    • Работа со фреймами
      • driver.switchTo().frame( &quot;frameName&quot; );
    • Работа с алертами
      • Alert alert = driver.switchTo().alert();
  • 21. Локаторы и поиск элементов
    • By.id(&quot;idOfObject&quot;)
    • By.linkText(&quot;TextUsedInTheLink&quot;)
    • By.partialLinkText(&quot;partOfThelink&quot;)
    • By.tagName(&quot;theHTMLNodeType&quot;)
    • By.className(&quot;cssClassOnTheElement&quot;)
    • By.cssSelector(&quot;cssSelectorToTheElement&quot;)
    • By.xpath(&quot;//Xpath/to/the/element&quot;)
    • By.name(&quot;nameOfElement&quot;)
  • 22. Поиск элементов
    • WebElement
    Ex.1 WebElement element = driver.findElement(By.id(“id”)); Ex.2 WebElement select = driver.findElement(By.xpath( &quot;//select&quot; )); List<WebElement> allOptions = select.findElements(By.tagName( &quot;option&quot; ));
  • 23. Работа с 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 () – клик по чекбоксу
  • 24. Работа с WebElement
    • WebElement – представление HTML- элемента (тега) вместе с его содержимым
    • Действия:
      • boolean isSelected ()
      • void setSelected ()
      • boolean isEnabled ()
      • String getText ()
      • WebElement findElement (By by)
      • List<WebElement> findElements (By by)
  • 25. WebElement для разных браузеров
    • Существуют реализации WebElement для разных браузеров:
      • FirefoxWebElement
      • InternetExplorerElement
      • И др.
    • Они поддерживают расширенную функциональность, т.е. специализированы под конкретный браузер ( drag-and-drop, положение элементов на странице)
    • Но тогда теряется кроссфункциональность!
  • 26. Работаем с Ajax
    • Работа осуществляется через специальный вид элемента на странице RenderedWebElement
    • Этот элемент может как отображаться на странице, так и не отображаться
    • Если элемент не отображается, то метод findElement() не выбросит Exception
  • 27. Работаем с Ajax: пример long end = System.currentTimeMillis() + 5000;     while (System.currentTimeMillis() < end) {                  RenderedWebElement resultsDiv = RenderedWebElement) driver.findElement(By.id(&quot;gac_m&quot;));      if (resultsDiv.isDisplayed()) {          break;      } }
  • 28. Еще возможности
    • Можно работать с куками
    • Можно использовать профили для Firefox
    • Можно выполнять JS на страницах
    • Поддержка HTML5
    • И многое другое
  • 29. RemoteWebDriver
    • Предназначен для запуска тестов на удаленной машине
    • Для его использования нужен клиент (RemoteWebDriver) и сервер ( RemoteWebDriverServer)
      • RemoteWebDriver (Capabilities desiredCapabilities)
  • 30. Вопросы-ответы
    • Вопросы  ))
    Павел Сташевский, Тестировщик [email_address] http://stashevskiy.blogspot.com http://twitter.com/paulstashevsky