WATIR

Поделись знанием:
Перейти к: навигация, поиск

WATIR (англ. Web Application Testing in Ruby) — бесплатная библиотека для интерпретатора Ruby с открытым кодом, позволяющая тестировать веб-приложения. Библиотека WATIR понимает структуру веб-страниц и позволяет получить доступ к её элементам. Библиотека WATIR используется для написания сценариев тестирования веб-страниц. С помощью набора таких сценариев можно автоматизировать процесс тестирования веб-приложений.

Watir доступен через менеджер пакетов Ruby Gem. Создатели Watir — Бретт Петтичрд (Bret Pettichord) и Паул Роджерс (Paul Rogers).





Функциональность

Ruby поддерживает OLE, что дает возможность автоматизации работы браузера Microsoft Internet Explorer. В отличие от инструментов тестирования, основанных на протоколе HTTP, которые симулируют запросы браузера, Watir симулирует работу пользователя с браузером с помощью протокола OLE, который создан на основе архитектуры COM.

COM допускает межпроцессные взаимодействия (например, между Ruby и IE) и динамическое создание и манипулирование объектами. Microsoft называет это автоматизацией OLE, а манипулирующие программы — контроллерами автоматизации. Технически, процесс IE — это сервер, который управляет объектами автоматизации, а программа Ruby становится клиентом, который манипулирует этими объектами.

Инсталляция

Watir зависит от Ruby, поэтому должны быть установлены оба. Ruby доступен на странице RubyForge 1 Click Installer. Текущая стабильная версия — 1.8.6-26 stable. Ruby также может быть загружен с сайта RubyForge. Текущая стандартная версия — 1.6.2. Эта версия предпочтительна, если не требуется обработка всплывающих окон системы безопасности или модальных диалоговых окон. Работы по разработке Watir на Rubyforge остановились после релиза 1.4.1 в августе 2005 г. Теперь они ведутся на OpenQA.org. После релиза Watir версии 1.5, разработки должны переместиться на WTR at RubyForge.

Для установки текущей версии Ruby Gem версии 1.5, посетите OpenQA Development Builds и загрузите инструмент gem. Вначале необходимо установить Ruby. Просто запустите самораспаковывающийся архив ruby184-20.exe. Этот файл установит Ruby и RubyGems, а также документацию на них в директорию C:\ruby. RubyGems — это библиотеки для Ruby. Введите 'gem list' в командном окне чтобы просмотреть все установленные библиотеки.

Затем необходимо установить Watir. 1. Откройте командное окно 2. Перейдите в директорию, в которую был установлен gem (предположительно C:\ruby)(в большинстве случаев вы будете уже в этой директории) 3. Напечатайте «gem install watir»

Вы должны увидеть что-то похожее на это:

C:\ruby>gem install watir
Successfully installed watir, version 1.5.1.1100
Installing ri documentation for watir-1.5.1.1100...
Installing RDoc documentation for watir-1.5.1.1100...

Если вы устанавливаете watir через прокси, вам нужно добавить следующий текст к команде:

-p your-proxy-server-name:your-proxy-server-port

Например, если ваш прокси-сервер называется proxy, и его порт 8000, добавочный текст в командной строке будет

-p proxy:8000

Чтобы деинсталлировать Watir, необходимо использовать деинсталлятор gem. Чтобы проверить факт установки Watir, наберите в командной строке 'gem list' для просмотра установленных библиотек. В списке вы должны увидеть такие строчки:

watir (1.5.1.1100)
Automated testing tool for web applications.

Примеры

Поиск на Google

# Здесь приводится небольшой скрипт для проверки результата поиска на Google
 require 'watir'                          # используем библиотеку Watir
 test_site = 'www.google.com'      # инициализируем переменную
 ie = Watir::IE.new                       # открываем браузер Internet Explorer
 ie.goto(test_site)                       # открываем сайт
 ie.text_field(:name, "q").set("pickaxe") # в текстовое поле с именем "q" помещаем слово "pickaxe"
 ie.button(:name, "btnG").click           # нажимает на кнопку с именем "btnG"
 
 if ie.text.include?("Programming Ruby")  
   puts "Test Passed. Found the test string: 'Programming Ruby'."
 else
   puts "Test Failed! Could not find: 'Programming Ruby'" 
 end

Предыдущие команды могут выполнить в интерактивной среде irb (Interactive Ruby Shell).

Обработка всплывающих окон

require 'watir'
require 'watir/dialog'
 
link = 'www.w3schools.com/js/tryit_view.asp?filename=tryjs_alert'
 
ie = Watir::IE.start(link)
 
# нажимаем на кнопку, не блокируя работу Watir
ie.button(:value, 'Display alert box').click_no_wait   
 
dialog = Watir::Dialog.new
 
# даем время на появление окна
sleep 0.4
 
# нажимает на кнопку 'OK' на диалоговом окне, закрываем окно
dialog.button('OK').click  
 
# Ждем пока диалоговое окно выполнит работу
# и IE продолжит свою работу
ie.waitForIE

Просмотр объектов

Для получения информации о различных объектах, находящихся на страницах, можно использовать следующее:

# Информация о различных элементах на странице
puts ie.frame("top_frame").text_fields.map(&:to_s)
puts ie.frame("top_frame").spans.map(&:to_s)
puts ie.frame("top_frame").tables.map(&:to_s)
puts ie.frame("top_frame").links.map(&:to_s)
puts ie.frame("top_frame").select_lists.map(&:to_s)
puts ie.frame("top_frame").labels.map(&:to_s)

Предыдущий пример также показывает способ доступа к содержимому фрейма. Если фреймы не используются, удалите часть «.frame("top_frame")» из команд.

См. также

Напишите отзыв о статье "WATIR"

Ссылки

  • [wtr.rubyforge.org Домашняя страница Watir]
  • [automated-testing.info/forum/watij Описание базовой функциональности]


Отрывок, характеризующий WATIR

По улице, запружая ее всю, непрерывно шли солдаты, так что Алпатыч не мог проехать и должен был дожидаться. Хозяйка Ферапонтова с детьми сидела также на телеге, ожидая того, чтобы можно было выехать.
Была уже совсем ночь. На небе были звезды и светился изредка застилаемый дымом молодой месяц. На спуске к Днепру повозки Алпатыча и хозяйки, медленно двигавшиеся в рядах солдат и других экипажей, должны были остановиться. Недалеко от перекрестка, у которого остановились повозки, в переулке, горели дом и лавки. Пожар уже догорал. Пламя то замирало и терялось в черном дыме, то вдруг вспыхивало ярко, до странности отчетливо освещая лица столпившихся людей, стоявших на перекрестке. Перед пожаром мелькали черные фигуры людей, и из за неумолкаемого треска огня слышались говор и крики. Алпатыч, слезший с повозки, видя, что повозку его еще не скоро пропустят, повернулся в переулок посмотреть пожар. Солдаты шныряли беспрестанно взад и вперед мимо пожара, и Алпатыч видел, как два солдата и с ними какой то человек во фризовой шинели тащили из пожара через улицу на соседний двор горевшие бревна; другие несли охапки сена.
Алпатыч подошел к большой толпе людей, стоявших против горевшего полным огнем высокого амбара. Стены были все в огне, задняя завалилась, крыша тесовая обрушилась, балки пылали. Очевидно, толпа ожидала той минуты, когда завалится крыша. Этого же ожидал Алпатыч.
– Алпатыч! – вдруг окликнул старика чей то знакомый голос.
– Батюшка, ваше сиятельство, – отвечал Алпатыч, мгновенно узнав голос своего молодого князя.
Князь Андрей, в плаще, верхом на вороной лошади, стоял за толпой и смотрел на Алпатыча.
– Ты как здесь? – спросил он.
– Ваше… ваше сиятельство, – проговорил Алпатыч и зарыдал… – Ваше, ваше… или уж пропали мы? Отец…
– Как ты здесь? – повторил князь Андрей.
Пламя ярко вспыхнуло в эту минуту и осветило Алпатычу бледное и изнуренное лицо его молодого барина. Алпатыч рассказал, как он был послан и как насилу мог уехать.
– Что же, ваше сиятельство, или мы пропали? – спросил он опять.
Князь Андрей, не отвечая, достал записную книжку и, приподняв колено, стал писать карандашом на вырванном листе. Он писал сестре:
«Смоленск сдают, – писал он, – Лысые Горы будут заняты неприятелем через неделю. Уезжайте сейчас в Москву. Отвечай мне тотчас, когда вы выедете, прислав нарочного в Усвяж».
Написав и передав листок Алпатычу, он на словах передал ему, как распорядиться отъездом князя, княжны и сына с учителем и как и куда ответить ему тотчас же. Еще не успел он окончить эти приказания, как верховой штабный начальник, сопутствуемый свитой, подскакал к нему.
– Вы полковник? – кричал штабный начальник, с немецким акцентом, знакомым князю Андрею голосом. – В вашем присутствии зажигают дома, а вы стоите? Что это значит такое? Вы ответите, – кричал Берг, который был теперь помощником начальника штаба левого фланга пехотных войск первой армии, – место весьма приятное и на виду, как говорил Берг.
Князь Андрей посмотрел на него и, не отвечая, продолжал, обращаясь к Алпатычу:
– Так скажи, что до десятого числа жду ответа, а ежели десятого не получу известия, что все уехали, я сам должен буду все бросить и ехать в Лысые Горы.
– Я, князь, только потому говорю, – сказал Берг, узнав князя Андрея, – что я должен исполнять приказания, потому что я всегда точно исполняю… Вы меня, пожалуйста, извините, – в чем то оправдывался Берг.
Что то затрещало в огне. Огонь притих на мгновенье; черные клубы дыма повалили из под крыши. Еще страшно затрещало что то в огне, и завалилось что то огромное.
– Урруру! – вторя завалившемуся потолку амбара, из которого несло запахом лепешек от сгоревшего хлеба, заревела толпа. Пламя вспыхнуло и осветило оживленно радостные и измученные лица людей, стоявших вокруг пожара.
Человек во фризовой шинели, подняв кверху руку, кричал:
– Важно! пошла драть! Ребята, важно!..
– Это сам хозяин, – послышались голоса.
– Так, так, – сказал князь Андрей, обращаясь к Алпатычу, – все передай, как я тебе говорил. – И, ни слова не отвечая Бергу, замолкшему подле него, тронул лошадь и поехал в переулок.


От Смоленска войска продолжали отступать. Неприятель шел вслед за ними. 10 го августа полк, которым командовал князь Андрей, проходил по большой дороге, мимо проспекта, ведущего в Лысые Горы. Жара и засуха стояли более трех недель. Каждый день по небу ходили курчавые облака, изредка заслоняя солнце; но к вечеру опять расчищало, и солнце садилось в буровато красную мглу. Только сильная роса ночью освежала землю. Остававшиеся на корню хлеба сгорали и высыпались. Болота пересохли. Скотина ревела от голода, не находя корма по сожженным солнцем лугам. Только по ночам и в лесах пока еще держалась роса, была прохлада. Но по дороге, по большой дороге, по которой шли войска, даже и ночью, даже и по лесам, не было этой прохлады. Роса не заметна была на песочной пыли дороги, встолченной больше чем на четверть аршина. Как только рассветало, начиналось движение. Обозы, артиллерия беззвучно шли по ступицу, а пехота по щиколку в мягкой, душной, не остывшей за ночь, жаркой пыли. Одна часть этой песочной пыли месилась ногами и колесами, другая поднималась и стояла облаком над войском, влипая в глаза, в волоса, в уши, в ноздри и, главное, в легкие людям и животным, двигавшимся по этой дороге. Чем выше поднималось солнце, тем выше поднималось облако пыли, и сквозь эту тонкую, жаркую пыль на солнце, не закрытое облаками, можно было смотреть простым глазом. Солнце представлялось большим багровым шаром. Ветра не было, и люди задыхались в этой неподвижной атмосфере. Люди шли, обвязавши носы и рты платками. Приходя к деревне, все бросалось к колодцам. Дрались за воду и выпивали ее до грязи.