Watir&web driver

35
Watir & WebDriver @p0deje

description

Алексей Родионов, QaSib Омск, июнь 2012

Transcript of Watir&web driver

Page 1: Watir&web driver

Watir & WebDriver@p0deje

Page 2: Watir&web driver

Алексей Родионов

Фриланс@p0deje

[email protected]://github.com/p0deje

watir-team

Page 3: Watir&web driver

-------------------------------------------------------------2002 2004 2006 2008 2010 2012

Системы автоматизации браузера

Page 4: Watir&web driver

Watir

-------------------------------------------------------------2002 2004 2006 2008 2010 2012

Системы автоматизации браузера

Page 5: Watir&web driver

Watir

+ Удобное объектно-ориентированное API+ Управление через Windows OLE

- Только IE- Только Windows

- Только Ruby

Page 6: Watir&web driver

Watirbrowser.goto('http://www.google.com')browser.text_field(:name, 'q').value = 'Watir'browser.button(:name, 'btnG').click

Page 7: Watir&web driver

Watir

Selenium

-------------------------------------------------------------2002 2004 2006 2008 2010 2012

Системы автоматизации браузера

Page 8: Watir&web driver

Selenium

+ Ядро использует JavaScript+ Кросс-браузерность

+ Кросс-платформенность+ Поддержка разных языков (Java, Ruby, PHP, etc.)

- Ограничение JavaScript песочницей- Нестабильность

- Процедурное и перегруженное API

Page 9: Watir&web driver

Seleniumbrowser.open('http://www.google.com')browser.type('name=q', 'Selenium')browser.click('name=btnG', :wait_for => :page)

Page 10: Watir&web driver

Seleniumbrowser.keyPressbrowser.typebrowser.typeKeys

Page 11: Watir&web driver

Watir

Selenium

WebDriver

-------------------------------------------------------------2002 2004 2006 2008 2010 2012

Системы автоматизации браузера

Page 12: Watir&web driver

WebDriver

+ Эмуляция действий пользователя (native events)+ Объектно-ориентированное API

+ Кросс-браузерность+ Кросс-платформенность

+ Поддержка разных языков (Java, Ruby, Python, C#)

Page 13: Watir&web driver

WebDriver API

WebDriver SPI

JSON

Браузер

Page 14: Watir&web driver

NativeDriver

Page 15: Watir&web driver

Watir

Selenium

WebDriver

Selenium-WebDriver

-------------------------------------------------------------2002 2004 2006 2008 2010 2012

Системы автоматизации браузера

Page 16: Watir&web driver

Selenium-WebDriverbrowser.navigate.to('http://www.google.com')browser.find_element(:name, 'q').send_keys('Selenium')browser.find_element(:name, 'btnG').click

Page 17: Watir&web driver

Selenium-WebDriver API

- Есть ли элемент на странице (NoSuchElementError)- Видим ли элемент (ElementNotVisibleError)

- Строки CSS/XPath локаторов (find_element)

Page 18: Watir&web driver

Watir API

Ленивая инициализация

browser.div(id: 'present').present?browser.div(id: 'visible').visible?browser.div(id: 'ajax').when_present.text

Page 19: Watir&web driver

Watir API

Имя метода определяет HTML тэг

browser.spanbrowser.text_fieldbrowser.table

Page 20: Watir&web driver

Watir API

Множественные локаторы

browser.span(class: 'span_class', text: 'Span text')

Page 21: Watir&web driver

Watir API

Кастомные атрибуты

browser.text_field(data_val_required: 'Value)

Page 22: Watir&web driver

Watir API

Сохранение DOM иерархии

browser.div(id: 'parent').span(class: 'span').text

Page 23: Watir&web driver

Watir API

Коллекции элементов

browser.table(id: 'parent').trs.each do |tr|tr.text

end

Page 24: Watir&web driver

Watir API

Регулярные выражения в локаторах

browser.div(class: /class-[0-9]+/)

Page 25: Watir&web driver

Selenium-WebDriver + Watir???

Page 26: Watir&web driver

WebIDLhttps://github.com/jarib/webidl

Библиотека-парсер Interface Description Language и генератор Ruby кода

Обеспечивает поддержку спецификаций W3C (e.g. HTML5)

Page 27: Watir&web driver

WatirSpechttps://github.com/watir/watirspec

Набор тестов, описывающих и проверяющих реализацию Watir API

Page 28: Watir&web driver

Watir-WebDriver

the most elegant way to use webdriver with ruby

Page 29: Watir&web driver

Watir 2

- Прекращение разработки FireWatir- Обновление API в соответствии с WatirSpec

Page 30: Watir&web driver

Watir 3

Еще большее соответствие WatirSpec

Page 31: Watir&web driver

НОWatir 3 ≠ Watir-WebDriver

Page 32: Watir&web driver

Watir-WebDriver

- Cookies API- Alert API

- Screenshot API...

https://github.com/watir/watir-webdriver

Page 33: Watir&web driver

Watir

Прекращена работа на собственным драйвером IE

Page 34: Watir&web driver

Watir 4 = Watir-WebDriver

Page 35: Watir&web driver

?@[email protected]

Credits to @jarib (http://seleniumcamp.com/materials/internals/)