Watir&web driver
description
Transcript of Watir&web driver
Watir & WebDriver@p0deje
-------------------------------------------------------------2002 2004 2006 2008 2010 2012
Системы автоматизации браузера
Watir
-------------------------------------------------------------2002 2004 2006 2008 2010 2012
Системы автоматизации браузера
Watir
+ Удобное объектно-ориентированное API+ Управление через Windows OLE
- Только IE- Только Windows
- Только Ruby
Watirbrowser.goto('http://www.google.com')browser.text_field(:name, 'q').value = 'Watir'browser.button(:name, 'btnG').click
Watir
Selenium
-------------------------------------------------------------2002 2004 2006 2008 2010 2012
Системы автоматизации браузера
Selenium
+ Ядро использует JavaScript+ Кросс-браузерность
+ Кросс-платформенность+ Поддержка разных языков (Java, Ruby, PHP, etc.)
- Ограничение JavaScript песочницей- Нестабильность
- Процедурное и перегруженное API
Seleniumbrowser.open('http://www.google.com')browser.type('name=q', 'Selenium')browser.click('name=btnG', :wait_for => :page)
Seleniumbrowser.keyPressbrowser.typebrowser.typeKeys
Watir
Selenium
WebDriver
-------------------------------------------------------------2002 2004 2006 2008 2010 2012
Системы автоматизации браузера
WebDriver
+ Эмуляция действий пользователя (native events)+ Объектно-ориентированное API
+ Кросс-браузерность+ Кросс-платформенность
+ Поддержка разных языков (Java, Ruby, Python, C#)
WebDriver API
WebDriver SPI
JSON
Браузер
NativeDriver
Watir
Selenium
WebDriver
Selenium-WebDriver
-------------------------------------------------------------2002 2004 2006 2008 2010 2012
Системы автоматизации браузера
Selenium-WebDriverbrowser.navigate.to('http://www.google.com')browser.find_element(:name, 'q').send_keys('Selenium')browser.find_element(:name, 'btnG').click
Selenium-WebDriver API
- Есть ли элемент на странице (NoSuchElementError)- Видим ли элемент (ElementNotVisibleError)
- Строки CSS/XPath локаторов (find_element)
Watir API
Ленивая инициализация
browser.div(id: 'present').present?browser.div(id: 'visible').visible?browser.div(id: 'ajax').when_present.text
Watir API
Имя метода определяет HTML тэг
browser.spanbrowser.text_fieldbrowser.table
Watir API
Множественные локаторы
browser.span(class: 'span_class', text: 'Span text')
Watir API
Кастомные атрибуты
browser.text_field(data_val_required: 'Value)
Watir API
Сохранение DOM иерархии
browser.div(id: 'parent').span(class: 'span').text
Watir API
Коллекции элементов
browser.table(id: 'parent').trs.each do |tr|tr.text
end
Watir API
Регулярные выражения в локаторах
browser.div(class: /class-[0-9]+/)
Selenium-WebDriver + Watir???
WebIDLhttps://github.com/jarib/webidl
Библиотека-парсер Interface Description Language и генератор Ruby кода
Обеспечивает поддержку спецификаций W3C (e.g. HTML5)
WatirSpechttps://github.com/watir/watirspec
Набор тестов, описывающих и проверяющих реализацию Watir API
Watir-WebDriver
the most elegant way to use webdriver with ruby
Watir 2
- Прекращение разработки FireWatir- Обновление API в соответствии с WatirSpec
Watir 3
Еще большее соответствие WatirSpec
НОWatir 3 ≠ Watir-WebDriver
Watir-WebDriver
- Cookies API- Alert API
- Screenshot API...
https://github.com/watir/watir-webdriver
Watir
Прекращена работа на собственным драйвером IE
Watir 4 = Watir-WebDriver
Credits to @jarib (http://seleniumcamp.com/materials/internals/)