Вступление
Как уже говорилось в предисловии, все мы ленивы и хотим работать меньше и получать больше
.
Именно для этих целей люди создали станки, автомобили и прочие другие прелести.
В этой заметке я хотел бы немного рассказать про автоматизацию работы с web-приложениями при помощи Ruby и Watir.
Что такое Watir?
Watir – библиотека для Ruby предназначенная для автоматизации работы с Web приложениями и их тестирования.
Существует также версии этой библиотеки для Java (Watij) и .Net(WatiN и BrowserUnit).
Что нужно для работы?
Для начала работы вам нужно:
- Windows с IE 6 и выше (лучше всего IE8 т.к. он значительно меньше тормозит)
- Firefox (см. ниже)
- Ruby 1.8.6 или выше
- Немного Интернет трафика
- Ровные руки
- Желание что-нибудь автоматизировать
Настройка и установка Watir
Ruby
Установим watir:
Соглашаемся с установкой всех пакетов по зависимостям.
Проверим что gem установился правильно, запустите irb и выполните следующие команды:
require 'rubygems'
require 'watir' |
Если все хорошо, команды пройдут без ошибок.
Для самых ленивых
, устанавливаем в Firefox модуль iTest2, он позволяет записывать действия пользователя прямо в код на Ruby/Watir.
Скачать можно отсюда: http://www.itest2.com/downloads
Прямаю ссылка для установки: http://www.itest2.com/downloads/itest2recorder.xpi
После успешной установки в меню «Tool» («Инструменты») появится пункт «iTest2 Recorder Sidebar».
Отлично можно начинать программить >:-)
Простой пример использования Watir для поиска в Google
require 'rubygems'
require 'firewatir'
include FireWatir
browser = Watir::Browser.start "http://www.google.ru/"
browser.text_field(:name, "q").set("demotivation")
browser.button(:name,"btnG").click |
Открывает гугль и ищет страницы по слову «demotivation»
Пример сложнее(нае… обманываем bux.to)
Для тех кто ждет «чуда», есть порталы аля http://bux.to, на таких сайтах вы получаете денежку за то что ходите по ссылкам которые вам дают. Вот простой пример как «дурить контору»(предпологается что вы уже залогинились):
require 'rubygems'
require 'watir'
ie = Watir::IE.new
ie.goto( 'http://www.bux.to/surf.php')
ie.refresh
doc = ie.document
index1 = 0
doc.links.each do |n|
index1 += 1
end
index = 18
while index >17 do
index = 0
doc.links.each do |n|
index += 1
end
ie.link(:index, '11').click
sleep(35)
ie.refresh
end
ie.close
Watir::IE.close_all
Watir::IE.close_all |
Для самых ленивых, iTest2 Recorder
Если вы не очень хотите забивать себе голову программированием воспользуйтесь iTest2 в Firefox.
Нажмите Alt+Shift+R. Сделайте все необходимые действия на сайте и нажмите «Record» в столбце iTest2. Перейдите на закладку «Watir» и скопируйте код.

Вставляем в текстовом редакторе, добавляем вначало следующие строки:
require 'rubygems'
require 'watir'
# ваш код |
запускаем и наслаждаемся…
Ложка дегтя
Есть у iTest2 маленький недостаток, он не следит за экранированием двойных и ординарных кавычек, а так же неправильно вновит данные в поле типа «textarea» (вместо «browser.area» нужно писать «browser.text_field» ).
Заключение
Как админу мне не нравится винда, поэтому использование MS Windows + IE меня немного раздражает, но к сожалению это пока единственный вариант который меня устроил. Есть еще FireWatir, но к сожалению проект не поддерживает некоторых функций Watir и абсолютно не понимает кодировки отличные от ASCII. Если у кого-то есть желание, я могу описать как пользовать FireWatir (он работает и в Linux), пишите в комментариях.