CodeFest 2013. Родионов А. — От Selenium к Watir — путь к...
Transcript of CodeFest 2013. Родионов А. — От Selenium к Watir — путь к...
![Page 1: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/1.jpg)
ОТ SELENIUM К WATIRПУТЬ К ПРОСВЕТЛЕНИЮ
![Page 2: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/2.jpg)
АЛЕКСЕЙ РОДИОНОВ
• 7+ лет в тестировании
• Контрибутор в Mozilla (WebQA)
• Разработчик Watir с июля 2012
![Page 3: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/3.jpg)
WATIR
•Web application testing in Ruby
• 10 лет
• 750,000 загрузок
![Page 4: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/4.jpg)
![Page 5: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/5.jpg)
СИСТЕМЫ АВТОМАТИЗАЦИИ БРАУЗЕРОВ
![Page 6: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/6.jpg)
СИСТЕМЫ АВТОМАТИЗАЦИИ БРАУЗЕРОВ
2002 2004 2006 2008 2010 2012
![Page 7: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/7.jpg)
СИСТЕМЫ АВТОМАТИЗАЦИИ БРАУЗЕРОВ
2002 2004 2006 2008 2010 2012
Watir
![Page 8: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/8.jpg)
WATIR
+ Управление через Windows OLE+ Стабильность
– Только IE– Только Windows– Только Ruby
![Page 9: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/9.jpg)
WATIR
browser.goto "http://www.google.com"browser.text_field(:name, "q").value = "Watir"browser.button(:name, "btnG").click
![Page 10: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/10.jpg)
WATIR
FireWatirOperaWatirSafariWatir
![Page 11: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/11.jpg)
СИСТЕМЫ АВТОМАТИЗАЦИИ БРАУЗЕРОВ
2002 2004 2006 2008 2010 2012
WatirSelenium
![Page 12: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/12.jpg)
SELENIUM
+ Ядро использует JavaScript+ Кросс-браузерность
– Ограничение JavaScript песочницей– Нестабильность– Перегруженное API
+ Кросс-платформенность+ Поддержка разных языков (Java, PHP, Ruby и т.д.)
![Page 13: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/13.jpg)
SELENIUM
browser.keyPressbrowser.typebrowser.typeKeys
![Page 14: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/14.jpg)
SELENIUM
browser.open "http://www.google.com"browser.type "name=q", "Selenium"browser.click "name=btnG", :wait_for => :page
![Page 15: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/15.jpg)
СИСТЕМЫ АВТОМАТИЗАЦИИ БРАУЗЕРОВ
2002 2004 2006 2008 2010 2012
WatirSelenium
WebDriver
![Page 16: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/16.jpg)
WEBDRIVER
+ Эмуляция действий пользователя (native events)+ Кросс-браузерность+ Кросс-платформенность+ Поддержка разных языков (Java, PHP, Ruby и т.д.)+ Объектно-ориентированное API
![Page 17: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/17.jpg)
WebDriver API
WebDriver SPI
JSON
Браузер
![Page 18: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/18.jpg)
NativeDriverios-driver
![Page 19: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/19.jpg)
СИСТЕМЫ АВТОМАТИЗАЦИИ БРАУЗЕРОВ
2002 2004 2006 2008 2010 2012
WatirSelenium
WebDriver
Selenium-WebDriver
![Page 20: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/20.jpg)
SELENIUM-WEBDRIVER API
![Page 21: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/21.jpg)
– Есть ли элемент на странице
SELENIUM-WEBDRIVER API
![Page 22: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/22.jpg)
– Есть ли элемент на странице– Строки CSS/XPath локаторов
SELENIUM-WEBDRIVER API
![Page 23: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/23.jpg)
Есть ли элемент на странице
SELENIUM-WEBDRIVER API
![Page 24: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/24.jpg)
Есть ли элемент на странице
browser.find_element id: "does-not-exist"#=> Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"id","selector":"does-not-exist"}
SELENIUM-WEBDRIVER API
![Page 25: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/25.jpg)
Есть ли элемент на странице
browser.find_element id: "does-not-exist"#=> Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"id","selector":"does-not-exist"}
SELENIUM-WEBDRIVER API
Monkey patch?
![Page 26: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/26.jpg)
Есть ли элемент на странице
browser.find_element id: "does-not-exist"#=> Selenium::WebDriver::Error::NoSuchElementError: Unable to locate element: {"method":"id","selector":"does-not-exist"}
SELENIUM-WEBDRIVER API
Monkey patch?Методы-обертки?
![Page 27: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/27.jpg)
CSS/XPath локаторы
SELENIUM-WEBDRIVER API
![Page 28: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/28.jpg)
CSS/XPath локаторы
browser.find_element css: ".div1 .div2 .div3"
SELENIUM-WEBDRIVER API
![Page 29: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/29.jpg)
CSS/XPath локаторы
browser.find_element css: ".div1 .div2 .div3"
SELENIUM-WEBDRIVER API
Конкатенация строк локаторов?
![Page 30: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/30.jpg)
CSS/XPath локаторы
browser.find_element css: ".div1 .div2 .div3"
SELENIUM-WEBDRIVER API
Конкатенация строк локаторов?Цепочки из find_element?
![Page 31: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/31.jpg)
WATIR API
![Page 32: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/32.jpg)
Имя метода = название тэга
WATIR API
![Page 33: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/33.jpg)
WATIR API
browser.divbrowser.spanbrowser.buttonbrowser.imgbrowser.a
Имя метода = название тэга
![Page 34: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/34.jpg)
browser.header
![Page 35: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/35.jpg)
WATIR API
Сохранение DOM иерархии
![Page 36: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/36.jpg)
WATIR API
Сохранение DOM иерархии
browser.div.spanbrowser.frame.abrowser.table.tbody.td
![Page 37: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/37.jpg)
browser.header.div.div.div.a
![Page 38: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/38.jpg)
browser.header.a(class: 'b-logo__image')
![Page 39: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/39.jpg)
Коллекции элементов
WATIR API
![Page 40: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/40.jpg)
Коллекции элементов
browser.divs.each do |div| div.textend
WATIR API
![Page 41: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/41.jpg)
browser.table.trs.map do |tr| tr.td(index: 2).textend#=> ["$500.00", "$5,600.00"]
![Page 42: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/42.jpg)
Ленивая инициализация
WATIR API
![Page 43: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/43.jpg)
Ленивая инициализация
link = browser.a(class: "does-not-exist")link.exists? #=> falselink.click#=> Watir::Exception::UnknownObjectException: unable to locate element, using {:class=>"does-not-exist", :tag_name=>"a"}
WATIR API
![Page 44: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/44.jpg)
Admin
![Page 45: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/45.jpg)
Admin
User
![Page 46: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/46.jpg)
Admin
User
def project { user: project_div.span(class: "user").text, job: project_div.span(class: "job").text, }end
![Page 47: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/47.jpg)
Admin
User
def project { user: project_div.span(class: "user").text, job: project_div.span(class: "job").text, change_link: project_div.a(text: "Change Commitment") }end
![Page 48: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/48.jpg)
Admin
User
def project { user: project_div.span(class: "user").text, job: project_div.span(class: "job").text, change_link: project_div.a(text: "Change Commitment") }end
project[:change_link].click #=> Admin: "Ok"project[:change_link].click #=> User: "UnknownObjectException"
![Page 49: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/49.jpg)
Удобная работа с Ajax
WATIR API
![Page 50: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/50.jpg)
Удобная работа с Ajax
WATIR API
browser.button(id: "button").when_present.clickbrowser.text_field(id: "field").when_visible.set "watir"browser.img(id: "image").wait_while_present
![Page 51: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/51.jpg)
Поддержка “текстовых” локаторов
WATIR API
![Page 52: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/52.jpg)
Поддержка “текстовых” локаторов
WATIR API
browser.text_field label: "Email"browser.button text: "Submit"
![Page 53: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/53.jpg)
Множественные локаторы
WATIR API
![Page 54: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/54.jpg)
Множественные локаторы
browser.img class: "image", index: 3
WATIR API
![Page 55: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/55.jpg)
Множественные локаторы
browser.img class: "image", index: 3
WATIR API
browser.find_element xpath: "(//img[@class='image'])[4]"
![Page 56: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/56.jpg)
Кастомные аттрибуты
WATIR API
![Page 57: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/57.jpg)
Кастомные аттрибуты
WATIR API
browser.div data_attr: "attr"
![Page 58: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/58.jpg)
Регулярные выражения в локаторах
WATIR API
![Page 59: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/59.jpg)
Регулярные выражения в локаторах
browser.a id: /job_\d+_name/
WATIR API
![Page 60: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/60.jpg)
Старый дизайн
![Page 61: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/61.jpg)
Старый дизайн
![Page 62: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/62.jpg)
Старый дизайн
def message browser.div(class: "flash_notice").textend
![Page 63: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/63.jpg)
Старый дизайн
def message browser.div(class: "flash_notice").textend
Новый дизайн
![Page 64: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/64.jpg)
Старый дизайн
def message browser.div(class: "flash_notice").textend
Новый дизайн
![Page 65: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/65.jpg)
Старый дизайн
def message browser.div(class: /(flash_|b-)notice/).textend
Новый дизайн
![Page 66: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/66.jpg)
Checkers
WATIR API
![Page 67: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/67.jpg)
Checkers
browser.add_checker do |page| if page.text.include?("Server Error") raise TestError, "Application exception!" endend
WATIR API
![Page 68: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/68.jpg)
Checkers
1. При переходе по URL2. При обновлении страницы3. При клике по элементу
WATIR API
![Page 69: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/69.jpg)
Alert APICookies API
Screenshot API
WATIR API
![Page 70: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/70.jpg)
Selenium-WebDriver+
Watir=
![Page 71: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/71.jpg)
Watir-WebDriverthe most elegant way to use webdriver in ruby
![Page 72: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/72.jpg)
WebDriver API
WebDriver SPI
JSON
Браузер
![Page 73: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/73.jpg)
WebDriver API
WebDriver SPI
JSON
Браузер
Watir API
![Page 74: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/74.jpg)
UNDER THE HOOD
![Page 75: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/75.jpg)
WebIDLhttps://github.com/jarib/webidl
Парсер Interface Description Language игенератор Ruby-кода
Обеспечивает поддержку W3C спецификаций
UNDER THE HOOD
![Page 76: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/76.jpg)
WatirSpechttps://github.com/watir/watirspec
Набор интеграционных тестов, описывающих ипроверяющих Watir API
UNDER THE HOOD
![Page 77: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/77.jpg)
Конструктор XPath запросовКонструктор CSS запросов
UNDER THE HOOD
![Page 78: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/78.jpg)
UNDER THE HOOD
browser.text_field
![Page 79: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/79.jpg)
UNDER THE HOOD
.//input[not(@type) or (translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='file' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='radio' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='checkbox' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='submit' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='reset' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='image' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='button' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='hidden' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='datetime' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='date' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='month' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='week' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='time' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='datetime-local' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='range' and translate(@type,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')!='color')]
browser.text_field
=
![Page 80: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/80.jpg)
СЕЙЧАС
![Page 81: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/81.jpg)
СЕЙЧАС
Watir-Classic+
Watir-WebDriver
![Page 82: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/82.jpg)
СЕЙЧАС
Watir-Classic+
Watir-WebDriver=
Watir 4
![Page 83: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/83.jpg)
WATIR 4
Watir::Browser.new :internet_explorerWatir::Browser.new :firefoxWatir::Browser.new :chromeWatir::Browser.new :phantomjs
![Page 84: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/84.jpg)
ПРОСВЕТЛЕНИЕ?
![Page 85: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/85.jpg)
ПРОСВЕТЛЕНИЕ?
Легкость
![Page 86: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/86.jpg)
ПРОСВЕТЛЕНИЕ?
ЛегкостьСкорость
![Page 87: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/87.jpg)
ПРОСВЕТЛЕНИЕ?
ЛегкостьСкоростьПоддержка
![Page 88: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/88.jpg)
ПРОСВЕТЛЕНИЕ?
ЛегкостьСкоростьПоддержкаПонимание
![Page 89: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/89.jpg)
ПРОСВЕТЛЕНИЕ?
ЛегкостьСкоростьПоддержкаПониманиеWebDriver
![Page 90: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/90.jpg)
ССЫЛКИ
![Page 91: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/91.jpg)
ССЫЛКИ
http://watir.com
![Page 92: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/92.jpg)
ССЫЛКИ
http://watir.comhttp://watirwebdriver.com
![Page 93: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/93.jpg)
ССЫЛКИ
http://watir.comhttp://watirwebdriver.com
http:://groups.google.com/group/watir-general
![Page 94: CodeFest 2013. Родионов А. — От Selenium к Watir — путь к просветлению](https://reader033.fdocuments.us/reader033/viewer/2022052412/55878c38d8b42a365d8b4585/html5/thumbnails/94.jpg)
ССЫЛКИ
http://watir.comhttp://watirwebdriver.com
http:://groups.google.com/group/watir-generalhttp://github.com/watir